2009-01-20 12 views
9

Realicé una copia de seguridad y restauré una base de datos de MS SQL Server 2005 a un nuevo servidor.Restauración de una copia de seguridad en un servidor diferente - Permisos de usuario

¿Cuál es la mejor manera de recrear el inicio de sesión, los usuarios y los permisos de usuario?

En el Administrador corporativo de SQL Server 2000, pude realizar un script de los inicios de sesión, crear secuencias de comandos para los usuarios y crear secuencias de comandos de los permisos de los usuarios por separado. Podía ejecutar uno después del otro y el único paso manual restante era establecer la contraseña de inicio de sesión (que no se ejecuta por motivos de seguridad)

Esto no parece posible en Management Studio de SQL Server 2005, haciendo que todo sea muy complicado y pérdida de tiempo. (Terminé escribiendo la base de datos completa, eliminé todos los inicios de sesión y usuarios de la nueva base de datos, ejecuté la secuencia de comandos y luego revisé una mezcla de mensaje de error para ver qué funcionaba y qué no).

Does Alguien tiene alguna experiencia y recomendaciones sobre esto?

Respuesta

14

La manera más fácil de hacerlo es con el sp_help_revlogin de Microsoft, un procedimiento almacenado que almacena todos los inicios de sesión, contraseñas y contraseñas de SQL Server, y mantiene los mismos SID.

Se puede encontrar en este artículo de la base de conocimientos:

http://support.microsoft.com/kb/918992

+0

Parece que no hace los permisos del usuario. (Como GRANT EXECUTE y GRANT SELECT, etc.) – MatBailie

+0

Correcto, porque eso está contenido en cada base de datos individual, no en el servidor. Si hace una copia de seguridad de una base de datos, haga sp_help_revlogin en el servidor anterior, use ese T-SQL generado en el nuevo servidor y luego realice las restauraciones. Ya ha terminado. –

+0

Los "usuarios" en la base de datos restaurada todavía parecen huérfanos de sus "inicios de sesión". – MatBailie

0

Uso el producto SQL Compare de Red Gate (http://www.red-gate.com/products/SQL_Compare/index.htm). Hay otros productos similares pero no he tenido motivos para buscar uno, ya que SQL Compare nunca me decepcionó.

Encontrará que es útil para mucho más que su requisito actual, ya que ayudará a sincronizar todos los tipos de objetos de base de datos, no solo el inicio de sesión y los permisos.

+0

Tenemos una herramienta similar de "base de datos diferencial". Lamentablemente, nuestro cliente no ... – MatBailie

2

Ejecutar este:

EXEC sp_change_users_login 'Report' 

Esto mostrará una lista de todos los usuarios huérfanos, por ejemplo:

enter image description here

Ahora ejecutar esta secuencia de comandos aquí para cada usuario, por ejemplo

exec sp_change_users_login 'Update_One', 'UserNameExample', 'UserNameExample' 

Esto fija mi problema.

Cuestiones relacionadas