El problema es que la restauración recupera a los usuarios de db de la instancia del servidor original, pero la nueva instancia generalmente no sabe nada de los inicios de sesión de los usuarios. Los verá en Seguridad en el nivel de base de datos, pero no tienen los inicios de sesión de nivel de servidor correspondientes.
Debe volver a conectar los usuarios de la base de datos con los inicios de sesión del servidor en la instancia en la que restauró la base de datos.
Hay un par de formas de hacerlo:
Cree nuevos inicios de sesión para ellos en la nueva instancia. Luego deberá eliminarlos como usuarios de la base de datos en la nueva instancia y agregar sus nuevos inicios de sesión. Esto parece extraño dado que puede crear los mismos nombres de inicio de sesión, pero los SID (identificadores de seguridad) serán diferentes y eso es lo que SQL usa para la identificación del usuario. Esto es lo suficientemente fácil para uno o dos inicios de sesión.
Si desea mantener los mismos usuarios, manteniendo los mismos SID, en todas las instancias, utilice el procedimiento almacenado sp_help_revlogin . Copie el código del enlace que creará los procedimientos almacenados necesarios y ejecútelo en el servidor desde el que desea copiar los usuarios. Generará un script SQL que puede ejecutar en su servidor de destino para crear los mismos usuarios que transportan SID, contraseñas, todo. Este es el camino a seguir si tiene muchos usuarios de bases de datos que necesita volver a conectar en la instancia de destino o si no conoce las contraseñas de uno o más inicios de sesión de SQL en la instancia de origen.
EXEC sp_change_users_login 'Auto_Fix', 'User', NULL, 'password';
lugar. :)Aquí está lo que encontré.
A medida que se expandió Squillman, los usuarios se copiaron con la base de datos, pero los inicios de sesión no. Hay un procedimiento de tienda llamado sp_change_users_login que puede usar para resolver el problema. Los pasos para hacerlo se detallan en este arco . Los detalles sobre el uso del procedimiento de la tienda se pueden encontrar en esta página .
fuente
A partir de SQL Server 2012, hay un comando T-SQL para asignar usuarios existentes a nuevos inicios de sesión. Cree el inicio de sesión, pero no intente hacer Asignaciones de usuarios (fallaría). Luego ejecuta:
Esto asignará el inicio de sesión existente al nuevo usuario. Documentación de SQL aquí: https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-user-transact-sql?view=sql-server-2017
fuente