Descripción del Escenario
Vamos a empezar con WSS3. Si bien, en MOSS 2007 no existen los Servicios Compartidos como existen en MOSS, al igual que ocurre en MOSS 2007, con WSS3 podremos crear una o varias Aplicaciones Web, de tal modo que cada una de las Aplicaciones Web tendrá una o varias Bases de Datos de Contenido, sobre las cuales se almacenan las Colecciones de Sitios. Sin profundizar más en estos conceptos (Aplicaciones Web, Bases de Datos de Contenido y Colecciones de Sitios), lo importante en este momento es tener claro que en cada una de las Bases de Datos de Contenido se almacena información de perfiles del usuario.
Este es el primer punto a tener en cuenta, y es muy importante.
Ahora vamos a hablar de MOSS 2007. No podemos olvidar, que MOSS 2007 extiende a WSS3, es decir, partiendo de una infraestructura WSS3, MOSS 2007 incorpora características y funcionalidades adicionales.
En consecuencia, lo primero que tenemos que tener claro, es que MOSS 2007 utilizará Bases de Datos de Contenido WSS3, y en consecuencia, en las Bases de Datos de Contenido de MOSS se almacenará información de perfiles de usuario.
Pero claro, con MOSS 2007, podemos configurar lo Servicios Compartidos, para que importen la información de los perfiles de usuario desde Directorio Activo. Bueno, esto es lo normal, pero también es posible importar perfiles desde LDAP o BDC (Business Data Catalog). En este caso, al importar la información de perfiles de usuarios en los Servicios Compartidos desde un origen de datos externo (Directorio Activo, LDAP o BDC), la información de perfiles importada se almacenará en las Bases de Datos de los Servicios Compartidos. Habitualmente, suele configurarse una importación de perfiles completa semanal, e incremental diaria.
Este segundo punto es muy importante, ya que acabamos de encontrar, que tenemos dos ubicaciones en las que se almacena la información de perfiles de usuario en MOSS:
- En las Bases de Datos de Contenido.
- En las Bases de Datos de los Servicios Compartidos, al realizar la importación de perfiles.
Para verlo de forma gráfica, si entramos en una Colección de Sitios de MOSS 2007, podremos:
- Utilizar la opción de My Settings, para ver la información del perfil almacenada en la Base de Datos de Contenido.
- Utilizar la opción de buscar personas, y al mostrar una de las personas incluidas en el resultado de búsqueda, se mostrará la información del perfil almacenada en los Servicios Compartidos.
Ahora que tenemos claro que existen dos ubicaciones físicas diferentes en las que se almacena la información de perfiles de usuario de MOSS, surge la duda: <¿Cómo se sincroniza la información de perfiles de usuario entre los Servicios Compartidos y las Bases de Datos de Contenido?
Para realizar dicha sincronización de perfiles de MOSS, se utilizan dos Jobs de MOSS (bueno, realmente existen dos Jobs por Aplicación Web) con el siguiente nombre:
- Profile Synchronization. Por defecto se ejecuta cada hora, sincronizando la información de perfiles de usuario en las Bases de Datos de Contenido, desde la información disponible en los Servicios Compartidos, proveniente de la correspondiente importación de perfiles.
- Quick Profile Synchronization. Por defecto se ejecuta cada minuto. Es similar al Job anterior, pero se limita a sincronizar la información de perfiles de los usuarios nuevos.
De hecho, ejecutando el comando stsadm -o sync -listolddatabases 0 (ojo con los guiones al copiar, que en ocasiones se copian mal y fallan los comandos), podremos ver qué Bases de Datos de Contenido han sincronizado con los Servicios Compartidos, y además, podremos ver también la fecha de la última sincronización. El inconveniente de este comando, es que en vez de mostrar el nombre de la Base de Datos, muestra el GUID utilizado en MOSS para identificarlas (un churro de letras y números), por lo que quizás no nos quede muy claro a simple vista.
Descripción del Problema de Sincronización de Perfiles de MOSS
Ahora que tenemos claro el escenario, resulta mucho más fácil describir el problema.
Pues eso, el problema de la Sincronización de Perfiles de Usuarios en MOSS 2007 (al menos, en el contexto del presente artículo) se refiere al caso en que tenemos configurada y funcionando correctamente la importación de perfiles en los Servicios Compartidos (por ejemplo, desde Directorio Activo), pero sin embargo, no se está sincronizando la información de los Perfiles de Usuario en Servicios Compartidos sobre las Bases de Datos de Contenido. Como consecuencia de esto, la información los perfiles de usuario almacenada en las Bases de Datos de Contenido, se irá quedando cada vez más obsoleta, conforme pasa el tiempo.
En este caso, podemos forzar la sincronización de la información de perfiles de usuario de MOSS, del siguiente modo:
- Ejecutar los siguientes comandos, para forzar la ejecución del Job de Sincronización de Perfiles de MOSS (Profile Synchronization), ejecutando el siguiente comando:
stsadm -o sync -deleteolddatabases 0
stsadm -o sync -IgnoreIsActive 1
stsadm -o sync -synctiming M:1
- Esperamos algo de tiempo, para que se pueda ejecutar el Job de Sincronización de Perfiels de MOSS. Es suficiente con esperar unos cinco minutos (al menos, en los casos que he conocido).
- Volvemos a configurar por defecto el Job de Sincronización de Perfiles de MOSS (Profile Synchronization), ejecutando el siguiente comando:
stsadm -o sync -synctiming H:1
Con esto, debería de sincronizarse correctamente la información de Perfiles de Usuario de las Bases de Datos de Contenido. De hecho, si ahora ejecutamos comando stsadm -o sync -listolddatabases 0, deberemos de poder ver que las Bases de Datos de Contenido a sincronizado correctamente con los Servicios Compartidos.
Sólo me he encontrado un caso en el que no ha funcionado. Esto ha sido, cuando estaba configurada alguna Base de Datos de Contenido en estado OffLine (me refiero en MOSS que lo veremos desde la Administración Central, ojo, no en SQL Server).
En algunos casos, cuando se trabajan con múltiples Bases de Datos de Contenido en una misma Aplicación Web, suelen ponerse todas las Bases de Datos OffLine, de tal modo, que cuando sea necesario crear una nueva Colección de Sitios, se pone OnLine la Base de Datos de Contenido sobre la que se desea almacenar la información de la Colección de Sitios a crear (y el resto de Bases de Datos de Contenido, en estado OffLine) para garantizar que se utiliza la Base de Datos de Contenido deseada durante la creación de dicha Colección de Sitios.
Esta configuración tiene un efecto colateral, ya que la Sincronización de Perfiles de Usuarios en MOSS no funciona con Bases de Datos de Contenido en estado OffLine, pudiendo encontrarnos errores como el siguiente:
Aborting profile synchronization for content DB 7620abb3-9c1a-9125-0f19-957c30d8284c due to non-online content database
En este caso, un WorkAround sería poner las Bases de Datos de Contenido en estado Online, y volver a ejecutar los pasos que antes comentamos, para seguidamente dejar de nuevo las Bases de Datos OffLine. Sin embargo, lo recomendable es tener siempre las Bases de Datos de Contenido en estado OnLine/Ready, para lo cual es importante saber cómo gestiona MOSS la Creación de Colecciones de Sitio y las Bases de Datos de Contenido.
Enlaces de interés
Por último, quería aprovechar para incluir varios enlaces con información relacionada, para quien quiera investigar y profundizar más en este tema: