post icon

Reparar los usuarios huérfanos en SQL Server al restaurar la Base de Datos

Cuando se una reinstalación de un servidor Windows con SQL Server o una migración de las bases de datos a otro servidor se darán cuenta que los login que tenían en el servidor original ha dejado de funcionar.

La explicación de éste fenómeno es sencilla, para SQL Server los Login son objetos del servidor y los usuarios son objetos de las bases de datos. Cuando hacemos un backup y restauramos en otro servidor con el mismo se van los usuario pero no los login (La nueva versión de SQL Server Denali tendrá una opción para embeber los logins como objetos de la base de datos, lo que evitará este típico problema). Por lo tanto debemos crear de nuevo estos login en el nuevo servidor, pero eso no es todo. Los login se deben asociar a usuarios dentro de las bases de datos, y cada login puede estar asociado a distintos usuarios en las distintas bases de datos (ni siquiera es necesario que se llamen igual), por ello es que se llaman usuarios huérfanos cuando se quedan si su login (el objeto que le permite iniciar sesión en el motor).

Por suerte para nosotros reparar esto es bastante sencillo, simplemente debemos crear el login como lo teniamos en el servidor original y ejecutamos un procedimiento almacenado que se encargará de asociar con su usuario correspondiente.

La query que podemos usar para saber cuales son los usuarios que se hayan huérfanos en cada base de datos es la siguiente:

EXEC sp_change_users_login 'Report';

Una vez que estamos posicionados dentro de la base de datos a reparar y ya hemos creado el login correspondiente ejecutamos la siguiente query para reparar:

EXEC sp_change_users_login 'Auto_Fix', 'usuario';

O la opción más larga para que al momento de reparar también creemos el login con su password correspondiente:

EXEC sp_change_users_login 'Auto_Fix', 'usuario', 'login', 'password';

Comentarios desde Facebook:

Sin Comentarios aun, puedes tú ser el primero en comentar!

Deja tu Comentario

Responder