T-SQL: Usuarios huérfanos

SQL Server usuarios huérfanos

Alguna vez nos ha pasado que cuando recuperamos una base de datos en otro servidor o instancia de SQL Server, también se recuperan los usuarios de la base de datos, pero no tienen un vínculo con los inicios de sesión del servidor. Por lo tanto nos encontramos con usuarios huérfanos.

Un usuario de base de datos cuyo inicio de sesión de SQL Server correspondiente está sin definir o se ha definido de forma incorrecta en una instancia de servidor no podrá iniciar una sesión en la instancia. Es lo que se denomina un usuario huérfano de la base de datos en esa instancia de servidor. Un usuario de base de datos puede convertirse en huérfano si se quita el inicio de sesión de SQL Server correspondiente. También puede convertirse en huérfano si una base de datos se restaura o se conecta a otra instancia de SQL Server. Otra manera de convertirse en huérfano es que el SID al que se asigna el usuario de la base de datos no esté presente en la nueva instancia de servidor.

Para detectar usuarios huérfanos

Ejecutamos las siguientes instrucciones de Transact-SQL:

USE <database_name>
GO 
sp_change_users_login @Action='Report'
GO

En los resultados se enumeran los usuarios y sus identificadores de seguridad (SID) correspondientes, que se encuentran en la base de datos actual y no están vinculados a ningún inicio de sesión de SQL Server.

Para resolver un usuario huérfano

Seguimos el siguiente procedimiento:

  • El siguiente comando vuelve a vincular la cuenta de inicio de sesión de servidor especificada en <login_name> con el usuario de la base de datos especificado por <database_user>.
USE <database_name>
GO
sp_change_users_login 
     @Action='update_one', 
     @UserNamePattern='<database_user>', 
     @LoginName='<login_name>'
GO
  • Una vez ejecutado el código del paso anterior, el usuario podrá obtener acceso a la base de datos. El usuario puede modificar la contraseña de la cuenta de inicio de sesión <login_name> mediante el procedimiento almacenado sp_password del siguiente modo:
USE master 
GO
sp_password @old=NULL, @new='password', @loginame='<login_name>';
GO

3 comentarios en «T-SQL: Usuarios huérfanos»

Los comentarios están cerrados.