Nuestro equipo de redactores ha estado mucho tiempo buscando la solución a tus preguntas, te ofrecemos la respuestas y esperamos servirte de gran ayuda.
Solución:
Esto significa que el inicio de sesión [R2ServerAAOUser] ya está asignado a un usuario en esa base de datos. O, en otras palabras, otro usuario de la base de datos está utilizando este inicio de sesión. Puede ver qué usuario de la base de datos está utilizando su inicio de sesión con la siguiente consulta:
use YourDB
go
SELECT su.name as DatabaseUser
FROM sys.sysusers su
join sys.syslogins sl on sl.sid = su.sid
where sl.name = 'test' -- login
PD: una versión del script que no usa las vistas de compatibilidad:
Select sp.name as LoginName, sp.type_desc as LoginType,
dp.name as DBUser, dp.type_desc as UserType
from sys.server_principals sp
join sys.database_principals dp on dp.sid = sp.sid
where sp.name = 'test' -- your login
Es una ‘cosa de metadatos’…
A veces, el usuario de la base de datos se ‘corrompe’ en el transcurso de lo que sucede en esa base de datos. (He visto un comportamiento similar si se restaura la base de datos, y los roles en la copia restaurada difieren de los que contenía la superposición. Es por eso que probé a continuación, lo que me solucionó el problema).
-
Abra las propiedades de inicio de sesión en SSMS –> (Seguridad | Inicios de sesión | ID de usuario fallido | Propiedades | Mapeo de usuarios). Probablemente verá que la base de datos ya está marcada y tiene roles asignados (como perfectamente normal).
-
Tenga en cuenta los permisos en la base de datos que dan el error, solo como referencia.
- Desmarque esa base de datos y guarde el inicio de sesión.
- Ahora vuelva a ejecutar su consulta para agregar el inicio de sesión/rol en la base de datos de destino. debería funcionar bien.
Si para ti ha sido útil este artículo, sería de mucha ayuda si lo compartes con más seniors así nos ayudas a extender nuestro contenido.