Estoy teniendo el siguiente error
Cannot execute as the database principal because the principal "dbo"
does not exist, this type of principal cannot be impersonated,
or you do not have permission.
Leí sobre ALTER AUTHORIZATION
, pero no tengo idea de en qué base de datos está sucediendo esto. Este error se escupe con mucha frecuencia y aumenta el registro de errores en aproximadamente 1 GB todos los días.
Respuestas:
Resolví este problema estableciendo el propietario de la base de datos. Mi base de datos no tenía ningún propietario antes de este problema. Ejecute este comando en su base de datos para configurar el propietario en la cuenta sysadmin:
fuente
dbo
aún estaba db_owner y NO PUEDO HACER NADA AL DBO. Se está volviendo realmente frustrante. No puedo cambiar nada.Hacer gráficamente.
Haga clic derecho en la base de datos -> propiedades -> archivos -> seleccione el propietario de la base de datos -> seleccione [sa] - ok
fuente
KB913423: no puede ejecutar una instrucción o un módulo que incluya la cláusula EXECUTE AS después de restaurar una base de datos en SQL Server 2005
fuente
Esto también puede suceder cuando la base de datos es una restauración desde un servidor o instancia SQL diferente. En ese caso, el principal de seguridad 'dbo' en la base de datos no es el mismo que el principal de seguridad en el servidor SQL en el que se restauró la base de datos. No me preguntes cómo sé esto ...
fuente
otra forma de hacerlo
fuente
La respuesta seleccionada y algunas otras son buenas. Solo quiero dar una explicación más pura de SQL. Se trata de la misma solución que no hay un propietario de base de datos (válido).
La cuenta del propietario de la base de datos
dbo
que se menciona por error siempre se crea con la base de datos. Por lo tanto, parece extraño que no exista, pero puede verificarlo con dos selecciones (o una, pero hagámoslo simple).que muestra el SID del
dbo
usuario en la base de datos DB_NAME ypara mostrar todos los inicios de sesión (y sus SID) para esta instancia del servidor SQL. Tenga en cuenta que no escribió ningún prefijo db_name, porque cada base de datos tiene la misma información en esa vista.
Entonces, en caso de error anterior , no habrá inicio de sesión con SID asignado al usuario de base de datos dbo.
Como se explicó anteriormente, eso generalmente ocurre cuando se restaura la base de datos desde otra computadora (donde la base de datos y el usuario de dbo se crearon mediante un inicio de sesión diferente) Y puede solucionarlo cambiando la propiedad al inicio de sesión existente.
fuente
Si lo anterior no funciona, intente lo siguiente. Me resolvió el problema incluso cuando el propietario estaba bien definido para la base de datos.
Error de replicación de SQL Server 2008 con: el proceso no pudo ejecutar 'sp_replcmds'
fuente
En Seguridad, agregue el principal como "usuario SQL sin inicio de sesión", haga que sea el propietario del esquema con el mismo nombre que el principal y luego, en Membresía, hágalo db_owner.
fuente
También tuve este error cuando accidentalmente alimentó una cadena de conexión de base de datos al espejo de solo lectura, no la base de datos primaria en una configuración de alta disponibilidad.
fuente
Como decía el mensaje, debe establecer un permiso como propietario para su usuario. Entonces puedes usar lo siguiente:
Espero que sea útil! Deja un comentario si te parece bien.
fuente