Solución:
Hay varias cosas que puede probar, y el éxito de cada una probablemente dependerá del rol de servidor que tenga.
Para empezar, si son solo uno o dos usuarios, honestamente, la forma más fácil es eliminar al usuario de la base de datos de la base de datos restaurada y, siempre que ya exista un inicio de sesión en el servidor, reasignar el usuario de la base de datos al inicio de sesión del servidor mediante SSMS. Si el inicio de sesión del servidor no existe, simplemente créelo, asigne el usuario y ¡listo! Vamos lejos.
Siguiente opción: si está migrando una gran cantidad de usuarios, use sp_help_revlogin. sp_help_revlogin es un procedimiento almacenado proporcionado por Microsoft que ayudará a migrar los inicios de sesión de un servidor a otro, incluidas las contraseñas y los SID. Aquí hay un buen artículo al respecto SP_HELP_REVLOGIN
Yo uso Auto_Fix con sp_change_users_login
en mi entorno de desarrollo para solucionar estos problemas (error 15023). Evite el uso de Auto_Fix en situaciones sensibles a la seguridad.
Auto_Fix: vincula una entrada de usuario en la vista del catálogo del sistema sys.database_principals en la base de datos actual a un inicio de sesión de SQL Server del mismo nombre. Si no existe un inicio de sesión con el mismo nombre, se creará uno. Examine el resultado de la instrucción Auto_Fix para confirmar que se haya realizado el enlace correcto. Evite el uso de Auto_Fix en situaciones sensibles a la seguridad.
sp_change_users_login 'AUTO_FIX', 'myuser'
Además, tenga en cuenta que esta función puede eliminarse en una versión futura de Microsoft SQL Server.
Otras referencias:
- El usuario, grupo o rol de SQL Server 2008 ya existe en la base de datos actual
- REVISIÓN: Error 15023: el usuario ya existe en la base de datos actual
- SQL asigna un inicio de sesión a un usuario existente