Seguramente te ha pasado que al migrar una base de datos de SQL Server de un servidor a otro, haces tu backup usando Microsoft SQL Server Management Studio, transfieres el archivo, y haces el restore en el nuevo servidor. Todo parece perfecto, pero cuando vas a crear tu usuario obtienes el siguiente error:

User, group, or role '' already exists in the current database. (Microsoft SQL Server, Error: 15023)

Entonces expandes tu base de datos, vas al nodo Security -> Users, buscas el usuario, y lo intentas borrar, pero entonces aparece otro error:

Drop failed for User ''. (Microsoft.SqlServer.Smo). The database principal owns a database role and cannot be dropped. (Microsoft SQL Server, Error: 15421)

En este punto te das cuenta de que el usuario está “huérfano” (orphaned), y una solución para darle la vuelta al problema es crear un nuevo usuario con otro nombre, asignarlo a la base de datos, y modificar el nombre del usuario en el Connection String de tu aplicación.

Pero existe una manera de solucionar las cosas correcta y fácilmente.

Abre una ventana de query en tu base de datos y teclea lo siguiente para ver los usuarios huérfanos:

EXEC sp_change_users_login 'Report'

Si ves a tu usuario ahí significa que efectivamente está huérfano y para deshuerfanizarlo 😉 teclea lo siguiente:

EXEC sp_change_users_login 'Auto_Fix', 'user'

Modificando user por el nombre de tu usuario.

Y listo, asunto totalmente solucionado, no tienes que crear nuevos usuarios ni modificar las Connection Strings de tus aplicaciones.

Por último, si quieres crear un nuevo usuario para esta base de datos, usa:

EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'

Un comentario sobre “User, group, or role already exists in the current database.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


+ cinco = 6