No son pocas las ocasiones en que hemos tenido problemas con los usuarios tras una migración de un entorno desarrollado en SharePoint. Desplegamos el nuevo entorno, todo funciona genial, entramos con cuentas de administrador y todo bien, pero los usuarios de a pie no pueden acceder.
Esto es debido en muchas ocasiones a que el entorno de Active Directory es una réplica y aunque se conserven los nombres de usuario (loginname) no se conservan los SIDs internos. Una solución sencilla y rápida consiste simplemente sustituir los SIDs que almacena SharePoint en base de datos por los nuevos SIDs de Active Directory. Con ello se restablecerán los accesos a través de las nuevas cuentas. Una forma de conseguirlo es accediendo directamente a base de datos y a nuestro propio riesgo (realizar copias de seguridad y demás).
Aquí tenéis un script de base de datos que ataca la tabla UserInfo y que permite restablecer estos identificadores. Muchas suerte!
DECLARE @login varchar(40), @systemid varbinary(128)
DECLARE curUsers CURSOR LOCAL FOR
SELECT tp_login, tp_systemid FROM userinfo where tp_deleted = 0
OPEN curUsers
FETCH NEXT FROM curUsers INTO @login, @systemid
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Resetting user ' + @login + ' to new SID '
PRINT suser_sid(@login)
UPDATE UserInfo
SET tp_systemid = suser_sid(tp_login) WHERE CURRENT OF curUsers
FETCH NEXT FROM curUsers INTO @login, @systemid
END
CLOSE curUsers
DEALLOCATE curUsers
GO