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.

0voto

Protron Points 3889

Dans mon cas, j'ai obtenu cette erreur en essayant de me faire passer pour un autre utilisateur. Par exemple

EXEC AS USER = 'dbo';

Et comme la base de données a été importée d'un autre environnement, certains de ses utilisateurs ne correspondaient pas aux identifiants de connexion du serveur SQL.

Vous pouvez vérifier si vous avez le même problème en exécutant la commande (obsolète) sp_change_users_login (en mode "Rapport"), ou utiliser la requête suivante :

select p.name,p.sid "sid in DB", (select serp.sid from sys.server_principals serp where serp.name = p.name) "sid in server"
from sys.database_principals p
where p.type in ('G','S','U')
and p.authentication_type = 1
and p.sid not in (select sid from sys.server_principals)

Si l'utilisateur que vous essayez d'usurper apparaît dans cette liste, vous pouvez probablement résoudre le problème en assignant l'utilisateur de la base de données au bon login dans votre serveur. Par exemple :

ALTER USER dbo WITH LOGIN = dbo;

-1voto

Amit Joshi Points 7

Allez dans Propriétés - Fichiers. Le nom du propriétaire doit être vide. Mettez "sa" dans le nom d'utilisateur et le problème sera résolu.

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