Sidebar

A todos nos a pasado que al recuperar una base de datos de producción a desarrollo, nos encontramos con el problema de que los usuarios quedaron mal. Bueno pues SQL Server 2000 nos ayuda a repararlos con un SP del sistema.

Sintaxis
sp_change_users_login [ @Action = ] 'action'
    [ , [ @UserNamePattern = ] 'user' ]
    [ , [ @LoginName = ] 'login' ]


Argumentos

[@Action =] 'action'
Describe la acción que debe realizar el procedimiento. action es de tipo varchar(10) y puede ser uno de estos valores.
ValorDescripción
 
 
Auto_Fix
 Vincula las entradas de los usuarios de la tabla sysusers de la base de datos actual a inicios de sesión del mismo nombre que se encuentran en syslogins. Es recomendable comprobar el resultado de la instrucción Auto_Fix para confirmar que los vínculos establecidos corresponden al resultado previsto. Evite la utilización de Auto_Fix en situaciones que puedan afectar a la seguridad de los datos. Auto_Fix realiza las estimaciones más favorables respecto a los vínculos, lo que puede permitir a los usuarios obtener más permisos de acceso de lo previsto.
user debe ser un usuario válido de la base de datos actual, y login debe ser NULL, una cadena de longitud cero ('') o no especificarse.
 
Report
 Enumera los usuarios y sus identificadores de seguridad (SID) correspondientes, que se encuentran en la base de datos actual, no vinculados con ningún inicio de sesión.
user y login deben ser NULL, una cadena de longitud cero ('') o no especificarse.
 
Update_One
 Vincula al usuario especificado de la base de datos actual con login. login tiene que existir. Es necesario especificar user y login.
 


Hagamos un ejemplo:


Supongamos que recuperamos una base de datos de producción en el ambiente de desarrollo, el cual contiene un login igual al de produccion llamado usuario_prueba, pero con diferente SID.


Produccion
usuario_prueba SID = 0xA69DE4DC3177D6119E210002A5419920
Desarrollo
Usuario_prueba SID = 0x4300E142801ED911B2540008C7EB95B6


Al recuperar la base de datos en el ambiente de desarrollo nos vamos a encontrar que el usuario no puede accesar. Esto es debido a que no tiene el mismo SID que producción.


Aqui es donde nos ayudamos del SP


Primero verificaremos que usuarios son los que estan chuecos, obteniendo un reporte de ellos.


sp_change_user_login 'Report'


Despues los corregimos de la siguiente manera.


sp_change_users_login 'Auto_Fix'


Si el comando anterior no los repara, tendremos que hacerlos directamente.
sp_change_users_login 'update_one','usuario_prueba','usuario_prueba'


Finalmente revisamos que el SID sea igual para el login y usuario con los comandos.


sp_helpuser
go
sp_helplogins
go


Espero que sea de utilidad.

 


Tips BD