277 votes

Le principal SQL Server "dbo" n'existe pas,

J'obtiens l'erreur suivante

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.

J'ai lu sur ALTER AUTHORIZATION mais je n'ai aucune idée de la base de données dans laquelle cela se produit. Cette erreur est très fréquente et fait grossir le journal des erreurs d'environ 1 Go chaque jour.

597voto

Hogan Points 356

J'ai résolu ce problème en définissant le propriétaire de la base de données. Ma base de données n'avait pas de propriétaire avant ce problème. Exécutez cette commande dans votre base de données pour définir le propriétaire sur le compte sysadmin :

use [YourDatabaseName] EXEC sp_changedbowner 'sa'

153voto

dinesh vishe Points 1309

enter image description here

Faire des graphiques.

Clic droit sur la base de données-->propriétés-->fichiers-->sélectionner le propriétaire de la base de données-->sélectionner [sa]-- ok

38voto

user3779273 Points 381
USE [<dbname>]
GO
sp_changedbowner '<user>' -- you can use 'sa' as a quick fix in databases with SQL authentication

KB913423 - Vous ne pouvez pas exécuter une instruction ou un module qui inclut la clause EXECUTE AS après avoir restauré une base de données dans SQL Server 2005.

23voto

TheNightOwl Points 33

Après avoir restauré une base de données de SQL2016 à SQL2019, j'ai eu le même problème lorsque j'ai essayé d'accéder aux diagrammes de base de données. J'avais déjà le bon propriétaire de la base de données, mais le propriétaire des fichiers était vide. Une fois que j'ai réglé cela, cela a fonctionné correctement....

enter image description here

13voto

user1820848 Points 21

Cela peut également se produire lorsque la base de données est restaurée à partir d'un serveur ou d'une instance SQL différent(e). Dans ce cas, le principal de sécurité "dbo" dans la base de données n'est pas le même que le principal de sécurité sur le serveur SQL sur lequel la base de données a été restaurée. Ne me demandez pas comment je le sais...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X