Unterstützungsobjekte für Datenbankdiagramme können nicht installiert werden… kein gültiger Eigentümer

132

Ich habe versucht, ein Datenbankdiagramm mit SQL Server 2008 zu erstellen, aber es tritt ein Fehler auf:

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 Seite "Dateien" des Dialogfelds "Datenbankeigenschaften" oder die Anweisung "ALTER AUTHORIZATION", um den Datenbankeigentümer auf eine gültige Anmeldung festzulegen, und fügen Sie dann die Unterstützungsobjekte für das Datenbankdiagramm hinzu.

Dann habe ich folgendes versucht:

EXEC sp_dbcmptlevel 'Ariha', '90';
GO
ALTER AUTHORIZATION ON DATABASE::Ariha TO [WIN-NDKPHUPPNFL\Administrator]
GO
USE Ariha
GO
EXECUTE AS USER = N'dbo' REVERT
GO

Der nächste Fehler erscheint:

Meldung 15404, Ebene 16, Status 11, Zeile 1 Es konnten keine Informationen zur Windows NT-Gruppe / zum Benutzer 'WIN-NDKPHUPPNFL \ Administrator', Fehlercode 0x534, abgerufen werden.

Das Problem ist, dass der Name des PCs in "DevPC" geändert wurde. Ich habe dies auch im Update-Skript geändert, aber immer noch den gleichen Fehler 15404.

Was kann ich tun, um diesen lästigen Fehler zu beheben?

Rookian
quelle
4
Dieses Problem tritt auch auf, wenn Sie ein Backup von einem anderen Computer wiederherstellen.
Tim Abell
Wenn Sie eine Datenbank von einem anderen Computer wiederherstellen, können Sie diesen Fehler beheben, indem Sie zwei Befehle ausführen: 1) alter authorization on database::[db_name] to [sa]und dann 2) denselben Befehl erneut ausführen und durch [sa]den Benutzer ersetzen, dem die Datenbank unmittelbar nach der Wiederherstellung gehört.
James L.

Antworten:

182

Sie sollten das SQL-Authentifizierungskonto für den Datenbankbesitz in Betracht ziehen. Dann müssen Sie sich keine Gedanken mehr über das Kommen und Gehen von Konten, das Verschieben von Datenbanken oder Instanzen auf andere Server und die Änderung Ihres nächsten PC-Namens machen. Ich habe mehrere Systeme, in denen wir verwenden:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [sa];

Wenn Sie den Eigentümer in dieses lokale Administratorkonto ändern möchten, sollte dies folgendermaßen aussehen:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [DevPC\Administrator];

Durch das Umbenennen des Computers in DevPCwurde das zuvor benannte lokale Konto entfernt, wodurch WIN-ND...\Administratorauch der aktuelle Eigentümer der Datenbank ungültig wurde.

Wenn dies SELECT @@SERVERNAME;nicht korrekt ist (sollte es heißen DevPC), möchten Sie möglicherweise auch Folgendes ausgeben, um sicherzustellen, dass die Umbenennung Ihres Servers in SQL Server stattgefunden hat:

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO
Aaron Bertrand
quelle
es zeigt: "WIN-NDKPHUPPNFL" Ich habe Ihre SQL-Anweisung verwendet und es funktioniert ... aber ist dieses Setup korrekt oder muss ich noch etwas tun?
Rookian
Nun, das hängt wirklich davon ab. Wenn Ihre Datenbank einem Windows-Domänen- / Arbeitsgruppenbenutzer gehören soll, ist wahrscheinlich noch mehr Arbeit zu erledigen. Persönlich finde ich das problematisch. Vielleicht lesen Sie dies zuerst: sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/…
Aaron Bertrand
1
Gibt es Probleme beim Festlegen, sawenn die SQL-Authentifizierung deaktiviert ist?
Tim Abell
@AaronBertrand Hallo, ich habe eine Frage. Standardmäßig Wenn wir eine Datenbank erstellen, wird der Datenbankbesitzer auf den aktuellen Windows-Benutzer festgelegt und wenn der aktuelle Windows-Benutzer auch Administrator ist. Warum müssen wir es in SQL Authantication Login ändern. In der Tat kann ich diesen Fehler nicht verstehen. Wenn wir es in ein Login ändern, funktioniert es. Administrator Windows Login ist aber auch Systemadministrator. Könnten Sie bitte helfen?
UfukSURMEN
Ich habe eine Reihe von Datenbanken wiederhergestellt, und alle haben den Fehler in der OP-Frage angezeigt, obwohl die Eigenschaften jeder Datenbank einen gültigen Benutzer zeigten. Ich habe den ersten Befehl verwendet, um ihn zu ändern, [sa]und dann habe ich ihn wieder in den Benutzer geändert, von dem er sagte, dass er vorher war, und Viola, keine Fehler mehr. Nicht sicher, warum eine Datenbankwiederherstellung den Datenbankbesitzer nicht richtig festgelegt hat ...
James L.
208

Gehen Sie in SQL Server Management Studio wie folgt vor:

  1. Klicken Sie mit der rechten Maustaste auf Ihre Datenbank und wählen Sie Eigenschaften
  2. Gehen Sie zur Seite Optionen
  3. Wählen Sie in der Dropdown-Liste rechts mit der Bezeichnung "Kompatibilitätsstufe" die Option "SQL Server 2005 (90)" 3-1. Wählen Sie "SQL Server 2008", wenn Sie einen Vergleichbarkeitsfehler erhalten.
  4. Gehen Sie zur Seite "Dateien"
  5. Geben Sie "sa" in das Eigentümer-Textfeld ein. 5-1 oder klicken Sie auf die Ellipsen (...) und wählen Sie einen rechtmäßigen Eigentümer.
  6. Klicken Sie auf OK

Anschließend können Sie auf die Datenbankdiagramme zugreifen.

Geben Sie hier die Bildbeschreibung ein

Israel Margulies
quelle
2
Gibt es einen Grund, warum eine Datenbank KEINEN Eigentümer haben sollte? Ich komme in die Produktdatenbank eines anderen und es ist kein Eigentümer festgelegt. War das beabsichtigt? (Es gibt niemanden beim Kunden, der es wissen würde).
Jason Kleban
Die Datenbank sollte einen Eigentümer haben. Die Wahl von "sa" anstelle eines rechtmäßigen Eigentümers ist einfach eine einfache Wahl, um den obigen Fehler zu beheben. Die Wahl eines rechtmäßigen Eigentümers hat das Problem jedoch auch behoben.
Lesly Revenge
3
Könnte jemand in diesen Schritten den Zweck der Änderung der Kompatibilitätsstufe erläutern? Nur den Eigentümer unter Dateien auf 'sa' zu setzen, war für mich ausreichend (obwohl ich seltsamerweise keine SQL-Authentifizierung aktiviert habe).
Tim Abell
Das hat bei mir funktioniert. Ich musste meinen Benutzer jedoch aus Datenbankname> Sicherheit entfernen.
Gezim
Dies funktionierte für mich unter SQL Server 2017 mit Management Studio 17.9, ohne dass Schritt 1 erforderlich war
Giorgio Barchiesi,
7
USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

Es klappt.

RafiO
quelle
5

Geben Sie "SA" anstelle von "sa" in das Textfeld des Besitzers ein. Das hat bei mir funktioniert.

Adarsh ​​VC
quelle
5

Ich hatte das gleiche Problem.
Ich wollte mein Diagramm, das ich am selben Tag bei der Arbeit erstellt habe, zu Hause anzeigen. Aber ich konnte wegen dieser Nachricht nicht.
Ich fand heraus, dass der Besitzer der Datenbank der Benutzer meines Computers war - wie erwartet. Da sich der Computer jedoch in der Domäne des Unternehmens befindet und ich nicht mit dem Netzwerk des Unternehmens verbunden bin, konnte die Datenbank den Eigentümer nicht auflösen.

Also habe ich den Besitzer in einen lokalen Benutzer geändert und es hat funktioniert !!
Hoffe das hilft jemandem.

Sie ändern den Benutzer, indem Sie mit der rechten Maustaste auf die Datenbank, Eigenschaften, Dateien und den Eigentümer klicken

PhpLou
quelle
3

Das hat es für mich behoben. Es legt den Eigentümer fest, der im Abschnitt "Dateien" des Datenbankeigenschaftenfensters gefunden wird, und entspricht dem Skript von Management Studio.

USE [your_db_name]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

Laut der Dokumentation zu sp_changedbowner ist dies jetzt veraltet.

Basierend auf Israels Antwort. Aarons Antwort ist die nicht veraltete Variante davon.

Tim Abell
quelle
3

Wählen Sie Ihre Datenbank aus - Rechtsklick - Eigenschaften auswählen

Wählen Sie DATEI auf der linken Seite

Wählen Sie im Feld EIGENTÜMER die Schaltfläche mit drei Punkten (…) aus

Wählen Sie nun user 'sa und klicken Sie auf OK

Anil Rana
quelle
0

Ich habe das gerade erlebt. Ich hatte die Vorschläge auf dieser Seite sowie die SQL Authority-Vorschläge (was dasselbe ist) gelesen und keiner der oben genannten Punkte hat funktioniert.

Am Ende habe ich das Konto entfernt und neu erstellt (mit demselben Benutzernamen / Passwort). Einfach so, alle Probleme gingen weg.

Leider bedeutet dies, dass ich nicht weiß, was schief gelaufen ist, sodass ich nichts anderes teilen kann.

Dave
quelle
0

1. Klicken Sie mit der rechten Maustaste auf Ihre Datenbank. 2. Wählen Sie dann Eigenschaften aus. 3.Wählen Sie die Option in den Kompatibilitätsstufen und wählen Sie SQL 2008 [100], wenn Sie mit Microsoft SQL 2008 arbeiten.

4.Wählen Sie dann die Datei aus und schreiben Sie (sa) in das Textfeld des Besitzers

100% funktioniert für mich.

Jefferson X Masonic
quelle
0

Eine einfachere Möglichkeit, dieses Problem zu lösen, besteht darin, mit der rechten Maustaste auf den Namen Ihrer Datenbank zu klicken, "Neue Abfrage" auszuwählen, "exec sp_changedbowner 'sa'" einzugeben und die Abfrage auszuführen. Dann können Sie loslegen.

Lebone Mcdonald
quelle
0

Sie müssen als Administrator mit der rechten Maustaste auf microsofft sql server management studio klicken und als Administrator ausführen

abdelnaser rafat
quelle
0

Sie müssen es nur im Abfrage-Editor ausführen. ALTER AUTHORIZATION ON DATABASE :: YourDatabase TO [domain \ account];

Nui San
quelle
-3

Das eigentliche Problem ist, dass dem Standardeigentümer (dbo) überhaupt kein Login zugeordnet ist. Als ich versuchte, das sa-Login dem Datenbankeigentümer zuzuordnen, erhielt ich einen weiteren Fehler mit der Angabe "Benutzer, Gruppe oder Rolle 'dbo'. existiert bereits ... ". Wenn Sie diesen Code jedoch ausprobieren, funktioniert er tatsächlich:

EXEC sp_dbcmptlevel 'yourDB', '90';

gehen

ALTER AUTHORIZATION ON DATABASE :: yourDB TO "yourLogin"

gehen

benutze [deineDB]

gehen

EXECUTE AS USER = N'dbo 'REVERT

gehen

Vandana
quelle
-3

Klicken Sie mit der rechten Maustaste auf Ihre Datenbank und wählen Sie Eigenschaften aus. Wählen Sie die Option in den Kompatibilitätsstufen aus. Wählen Sie SQL 2005 [90] anstelle von 2008, wenn Sie mit Microsoft SQL 2008 arbeiten. Wählen Sie dann die Datei aus und schreiben Sie (sa) in das Textfeld des Besitzers. es wird wahrscheinlich funktionieren

Ezzo Gasmallah
quelle