Fehler beim Ändern des Besitzes der Datenbank von der Seite "Dateien" im Dialogfeld "Datenbankeigenschaften"


10

Ich habe eine Datenbank wiederhergestellt und einen neuen Benutzer (denselben Benutzer, von dem ich mich angemeldet habe) als db_owner erstellt. Als ich nun das Datenbankdiagramm sehen wollte, bekam ich einen Fehler

Unterstützungsobjekte für Datenbankdiagramme können nicht installiert werden, da diese Datenbank keinen gültigen Eigentümer hat. Um fortzufahren, verwenden Sie zuerst die Dateiseite des Dialogfelds Datenbankeigenschaften oder die Anweisung Autorisierung ändern, um den Datenbankeigentümer auf eine gültige Anmeldung festzulegen, und fügen Sie dann die Datenbankunterstützungsobjekte hinzu

Als ich nun versuchte, den Besitz von der Seite "Dateien" der Datenbankeigenschaften zu ändern, wird die Fehlermeldung als angezeigt

Set Owner fehlgeschlagen für Datenbank 'ABC'. (Microsoft.SqlServer.SMO) Zusätzliche Informationen: In SMO ist eine Ausnahme aufgetreten. Der vorgeschlagene neue Datenbankeigentümer James-PC \ James wird in dieser Datenbank als Benutzer James zugeordnet. Parametername: James-PC \ James "

Bitte helfen Sie mir, das Problem zu beheben, damit ich nach dem Wiederherstellen der Datenbanksicherung von einem anderen System möglicherweise Datenbankdiagramme auf diesem Computer sehen kann.

Antworten:


8

Der Datenbankeigentümer ist das Login in sys.server_principals, dem die Datenbank gehört, wie durch ihre SID definiert. Nach einer Wiederherstellung kann es leicht vorkommen, dass die Anmeldung, mit der die Datenbank wiederhergestellt wurde, nicht die Anmeldung ist, die der vorherige Eigentümer der Datenbank war. (Dies ist sogar noch wahrscheinlicher, wenn die Datenbank zwischen Servern verschoben wird.)

Es kann also drei Einstellungen geben, mit denen Sie Probleme haben

  1. Die Datenbank owner_sid entspricht nicht der Datenbank db_owner sid der Datenbank. Sie können dies für die Datenbank ABC vergleichen, indem Sie:

    SELECT owner_sid FROM sys.databases wobei name = 'ABC';

    SELECT sid von ABC.sys.database_principals WHERE name = 'dbo';

  2. Als Nächstes erhalten Sie die Meldung, dass Ihre vorgeschlagene Datenbank owner_sid auch als Benutzer in sys.database_principals vorhanden ist. Wir wissen dies aus der Fehlermeldung über die Zuordnung des vorgeschlagenen Eigentümers.

Ihre Schritte sind also:

 USE ABC;
 DROP USER James;
 ALTER AUTHORIZATION ON DATABASE::ABC TO [James-PC\James];

Sie haben den Benutzer gelöscht, der nicht benötigt wird, da Sie ihn zum dbo machen. Sobald dies nicht mehr möglich ist, kann Ihr Login zum Eigentümer der Datenbank gemacht werden.

BEARBEITEN: Sie können SSMS auch verwenden, um den James-Benutzer aus der ABC-Datenbank zu löschen. Anschließend können Sie zur Registerkarte Datenbankeigenschaften-Datei zurückkehren, um den Datenbankeigentümer festzulegen. (Entschuldigung, ich denke eher an Skripte.)


1
Das ist interessant, in Management Studio erscheint die Anmeldung, die als dbo erstellt wurde, nicht unter YOUR_DB / Security / Users,
joedotnot

-3
  1. Rechtsklick Datenbank
  2. Eigenschaften
  3. Dateien auswählen
  4. Besitzer korrigieren / festlegen (zu Ihrem PC \ you oder durch Klicken auf "..." durchsuchen und auswählen)

Dies funktionierte für mich in SQL Server Management Studio v17.1


2
Ich denke genau das hat bei ihnen nicht funktioniert.
Dekso
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.