martes, 12 de marzo de 2013

Error: 'The user does not exist or is not unique' - SharePoint 2007

Recientemente tuve un problema con SharePoint 2007, donde hubo una actualización del usuario en Active Directory lo que ocasionó que, SharePoint ya no actualizara el usuario, por lo que me vi en la necesidad de modificarlo directamente en la base de datos.

En primera instancia, sé que los usuarios son almacenados en la tabla dbo.UserInfo, por lo que procedí a buscar al anterior usuario:

SELECT * FROM dbo.UserInfo WHERE tp_Login = 'DOMAIN\olduser'

Una vez revisado el usuario, hice un "Update":

UPDATE dbo.UserInfo SET tp_Login = 'DOMAIN\newuser' WHERE tp_Login = 'DOMAIN\olduser' AND tp_ID = '999'

Una vez haciendo esto, parecia estar todo correcto, el usuario al momento de agregar documentos, o iniciar sesión siempre veía a DOMAIN\newuser.

Sin embargo, tuve al agregarlo a un grupo, fue donde me apareció el siguiente error:

'The user does not exist or is not unique'.

Además noté que al buscar el usuario en "Select People and Groups" por nombre me aparecía algo como:

Display Name Title Deparment E-mail Account Name
Full Name Engineer TI newuser@domain DOMAIN\newuser
Full Name Engineer TI newuser@domain DOMAIN\olduser

Incluso si hacía un 'SELECT' sobre la tabla de UserInfo buscando al antiguo usuario no lograba verlo. Buscando en Internet, hubo muchas soluciones desde actualizar/migrar la información del usuario utilizando stsadm, o borrar la caché de SharePoint pero no me funcionó. Siendo un poco obvio, supuse que en algún lado debería guardar al anterior usuario, por lo que buscando un rato en las tablas de SharePoint y con la siguiente consulta encontré después de algunas horas el registro del usuario anterior en otra tabla:

SELECT * FROM AllUserData WHERE nvarchar3 = 'NHELIOS\olduser'

Por lo que nuevamente realice un update:

UPDATE AllUserData SET nvarchar3 = 'DOMAIN\newuser' WHERE nvarchar4 = 'DOMAIN\olduser'

Nuevamente hice la búsqueda del usuario y ahora si me apareció una única vez:

Display Name Title Deparment E-mail Account Name
Full Name Engineer TI newuser@domain DOMAIN\newuser

Finalmente, agregué al usuario al grupo que necesitaba y pude agregarlo satisfactoriamente. Debo mencionar que esta solución implica modificar directamente la base de datos, solución que debería ser la última opción ya que modificar la base de datos sin tener el cuidado correspondiente puede afectar la funcionalidad de cualquier aplicación.