Ich erhalte den folgenden Fehler
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.
Ich habe darüber gelesen ALTER AUTHORIZATION
, aber ich habe keine Ahnung, in welcher Datenbank dies geschieht. Dieser Fehler wird sehr häufig ausgespuckt und vergrößert das Fehlerprotokoll täglich um etwa 1 GB.
Antworten:
Ich habe dieses Problem behoben, indem ich den Datenbankeigentümer festgelegt habe. Meine Datenbank hatte vor diesem Problem keinen Eigentümer. Führen Sie diesen Befehl in Ihrer Datenbank aus, um den Eigentümer auf das Systemadministratorkonto festzulegen:
quelle
dbo
war immer noch der db_owner und ich kann DBO nichts antun. Es wird wirklich frustrierend. Ich kann nichts ändern.Grafisch tun.
Datenbank Rechtsklick -> Eigenschaften -> Dateien -> Datenbankbesitzer auswählen -> [sa] auswählen - ok
quelle
KB913423 - Sie können keine Anweisung oder ein Modul ausführen, das die EXECUTE AS-Klausel enthält, nachdem Sie eine Datenbank in SQL Server 2005 wiederhergestellt haben
quelle
Dies kann auch passieren, wenn es sich bei der Datenbank um eine Wiederherstellung von einem anderen SQL Server oder einer anderen Instanz handelt. In diesem Fall stimmt das Sicherheitsprinzipal 'dbo' in der Datenbank nicht mit dem Sicherheitsprinzipal auf dem SQL Server überein, auf dem die Datenbank wiederhergestellt wurde. Frag mich nicht, woher ich das weiß ...
quelle
eine andere Art, es zu tun
quelle
Ausgewählte Antwort und einige andere sind alle gut. Ich möchte nur eine reinere Erklärung für SQL geben. Es kommt zu derselben Lösung, dass es keinen (gültigen) Datenbankeigentümer gibt.
Das fälschlicherweise
dbo
erwähnte Datenbankbesitzerkonto wird immer mit der Datenbank erstellt. Es scheint also seltsam, dass es nicht existiert, aber Sie können es mit zwei Auswahlen überprüfen (oder einer, aber lassen Sie es uns einfach halten).Hier wird die SID des
dbo
Benutzers in der Datenbank DB_NAME und angezeigtum alle Anmeldungen (und ihre SIDs) für diese SQL Server-Instanz anzuzeigen. Beachten Sie, dass kein Präfix db_name geschrieben wurde, da jede Datenbank in dieser Ansicht dieselben Informationen enthält.
Im Falle des oben genannten Fehlers erfolgt keine Anmeldung mit der SID, die dem Datenbank-Dbo-Benutzer zugewiesen ist.
Wie oben erläutert, geschieht dies normalerweise beim Wiederherstellen der Datenbank von einem anderen Computer (wobei Datenbank und Dbo-Benutzer durch unterschiedliche Anmeldungen erstellt wurden). Sie können das Problem beheben, indem Sie den Eigentümer auf das vorhandene Login ändern.
quelle
Wenn das oben genannte nicht funktioniert, versuchen Sie Folgendes. Es löste das Problem für mich, selbst wenn der Eigentümer für die Datenbank gut definiert war.
Die SQL Server 2008-Replikation schlägt fehl mit: Der Prozess konnte 'sp_replcmds' nicht ausführen.
quelle
Fügen Sie unter "Sicherheit" den Principal als "SQL-Benutzer ohne Anmeldung" hinzu, machen Sie ihn zum Eigentümer des Schemas mit demselben Namen wie der Principal und machen Sie ihn dann in "Mitgliedschaft" zu db_owner.
quelle
Hatte auch diesen Fehler, als versehentlich eine Datenbankverbindungszeichenfolge dem schreibgeschützten Spiegel zugeführt wurde - nicht der Primärdatenbank in einem HA-Setup.
quelle
Wie in der Nachricht angegeben, sollten Sie Ihrem Benutzer die Berechtigung als Eigentümer festlegen. Sie können also Folgendes verwenden:
Hoffe hilfreich! Hinterlasse einen Kommentar, wenn es für dich in Ordnung ist.
quelle