Cuando ejecuto este SQL:
USE ASPState
GO
IF NOT EXISTS(SELECT * FROM sys.sysusers WHERE NAME = 'R2Server\AAOUser')
CREATE USER [R2Server\AAOUser] FOR LOGIN [R2Server\AAOUser];
GO
Obtuve el siguiente error:
El inicio de sesión ya tiene una cuenta con un nombre de usuario diferente.
¿Cómo sé cuál es este nombre de usuario diferente para mi cuenta de inicio de sesión?
sql-server
security
logins
Jack
fuente
fuente
dbo
se muestra. Extraño, no recuerdo que haya usado eldbo
para mi cuentaR2Server\AAOUser
. Preguntándome qué debería hacer a continuación.aspnet_regsql -E -S .\MSSQLSERVER_R2 -ssadd
para crear laASPState
base de datos. Creo que probablemente ya estoy listo, aunque, en primer lugar, ni siquiera me doy cuenta.sys.server_principals
ysys.database_principals
.sysusers
ysyslogins
solo están ahí para la compatibilidad con versiones anteriores.Es una 'cosa de metadatos' ...
A veces, el usuario de la base de datos se "corrompe" en el transcurso de lo que esté sucediendo en ese DB. (He visto un comportamiento similar si la base de datos se restaura, y los roles en la copia restaurada difieren de los que contenía la superposición. Por eso lo intenté a continuación, lo que solucionó el problema para mí).
Abra las propiedades de inicio de sesión en SSMS -> (Seguridad | Inicios de sesión | ID de usuario que falla | Propiedades | Asignación de usuario). 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.
fuente
Cannot drop the user 'dbo'. (Microsoft SQL Server, Error: 15150)
Cannot drop the user 'dbo'.
mensaje de error. Me encontré con este script, lo que elimina la correlación de usuarios problemáticos y se fija el tema:USE DATABASE_NAME; ALTER AUTHORIZATION ON DATABASE::DATABASE_NAME TO [sa]
. Para obtener más información, esta es la fuente que utilicé: blog.sql-assistance.com/index.php/cannot-drop-the-user-dbo