Tuve que mover varias bases de datos de SQL Server 2008 a nuestro nuevo servidor db, así que hice una copia de seguridad de todos ellos (en archivos .bak), copié estos archivos en el nuevo cuadro y los restauré (todo con SQL Management Studio).
Todo salió bien, pero ahora encuentro que no puedo iniciar sesión en ninguna de las bases de datos utilizando la cuenta de SQL Server que continúa funcionando en el antiguo RDBMS. Mi inicio de sesión autenticado con Windows todavía funciona bien por cierto.
Tenía la idea de que los usuarios y los permisos se duplicarían sin problemas en el nuevo servidor de la base de datos, pero parece que algo salió mal en alguna parte. Agradecería comentarios / sugerencias / ofertas de ayuda ;-)
Esto se conoce como "usuarios huérfanos". Aquí hay 2 formas de solucionarlo
Si puede, restaure la base de datos maestra original como "loginsource" y sys.server_principals tiene suficiente información para generar todos los inicios de sesión de SQL Server y Windows. Es decir, los SID y la contraseña cifrada
Si usa solo inicios de sesión de Windows, puede ejecutar esto por base de datos para generar un script
Guión:
fuente
Idealmente, debería escribir los usuarios y permisos antes de hacer la restauración. Si eso no ha sucedido, entonces debe solucionar las cosas después del hecho, y es probable que se pierda algo, pero debería poder llegar al 90% del camino.
Lo primero que debe determinar es si existen los mismos inicios de sesión en el nuevo servidor. Si no lo hacen, entonces debe averiguar si está bien que los inicios de sesión se creen en el nuevo servidor. Nunca suponga que deberían crearse, podría haber una buena razón de por qué no existían en primer lugar. Luego puede crearlos cavando a través de la tabla sysusers.
Puede corregir a los usuarios huérfanos ejecutando algo similar a lo siguiente:
Este código funcionará para SQL2008, pero fue escrito para ser compatible con versiones anteriores de SQL2000.
fuente
Puede consultar la siguiente URL para corregir los permisos de usuario de la base de datos
http://mywindowsblog.com/?p=287
fuente
Aquí hay un artículo rápido que explica la solución:
Restaurar inicios de sesión huérfanos en SQL Server después de restaurar la base de datos
fuente