Ist es jemals schädlich, einen Datenbankeigentümer in SQL Server festzulegen?

8

Auf einem unserer SQL Server befinden sich eine Reihe von Datenbanken, die keinen Eigentümer haben. Ist es im Allgemeinen schädlich, ihnen eine zu geben? Zum Beispiel:

USE dbName;
GO

EXEC sp_changedbowner 'sa';
GO

Ich weiß, dass sa vielleicht nicht die beste Wahl ist, aber es ist nur ein Beispiel. Mein Hauptanliegen ist, ob das Erstellen eines Besitzers, wenn es keinen gibt, Probleme mit Software verursachen kann, die derzeit eine OK-Verbindung herstellen kann.

bopapa_1979
quelle
Was ist die Auswirkung, wenn eine Datenbank keinen Eigentümer hat?

Antworten:

11

Sie sollten DDL anstelle von abwärtskompatiblen gespeicherten Prozeduren verwenden:

ALTER AUTHORIZATION ON DATABASE::dbName TO sa;

Und der Eigentümer der Datenbank (egal sa) sollte wahrscheinlich nicht das Konto sein, das Ihre Anwendungen verwenden, sodass dies keine wirklichen Auswirkungen auf Ihre Anwendungen haben sollte. Wenn dies der Fall ist, sollten Sie die von Ihrer Anwendung verwendeten Verbindungszeichenfolgen aktualisieren (was keine wesentliche Änderung sein sollte) und sicherstellen, dass das Konto über ausreichende - aber nicht über Gott - Berechtigungen verfügt.

Aaron Bertrand
quelle
Danke für den Ratschlag. "Mein Hauptanliegen ist jedoch, ob das Erstellen eines Besitzers, wenn keiner vorhanden ist, Probleme mit Software verursachen kann, die derzeit eine OK-Verbindung herstellen kann."
bopapa_1979
@ Eric das Problem ist, dass es einen Unterschied zwischen "keine" und "ungültig" gibt - warum gibt es Ihrer Meinung nach KEINEN Besitzer?
Aaron Bertrand
Ich denke, du hast recht. Ich habe das Problem mit Rechtsklick -> Eigenschaften festgestellt und das allgemeine Dialogfeld "Angefordertes Dialogfeld kann nicht angezeigt werden. Der Eigentümer der Eigenschaft ist für die Datenbank 'dbName' nicht verfügbar. Diese Eigenschaft ist für dieses Objekt möglicherweise nicht vorhanden oder kann aufgrund unzureichender Eigenschaften nicht abgerufen werden." Zugangsrechte." Aber ich habe gerade eine Abfrage ausgeführt: Wählen Sie name, owner_sid aus sys.databases. Ich habe eine Sid für die Datenbank erhalten, aber wenn ich stattdessen SUSER_SNAME (owner_sid) verwende, erhalte ich eine NULL in der 2. Spalte. Also, ungültiger Besitzer, richtig? Vielen Dank!
Bopapa_1979
@ Eric ja, richtig.
Aaron Bertrand
4
Nein, es gibt immer einen Eigentümer (es kann einfach nicht gültig sein). Ihre Situation bedeutet, dass es sich um ein Login handelt, das auf dem alten Server vorhanden ist, aber nicht auf den neuen Server migriert wurde. Stellen Sie sie einfach alle ein saund erledigen Sie sie, es sei denn, Sie benötigen diese Anmeldungen aus anderen Gründen (wenn die Anmeldung jedoch nicht unbedingt erforderlich ist, um auf dem aktuellen Server vorhanden zu sein, ist es sehr fraglich, ob sie jemals Eigentümer der Datenbank sein sollte, niemals Der Geist sollte es jetzt besitzen, da es bewegt wurde.
Aaron Bertrand
6

Indem Sie einen Datenbankeigentümer deklarieren, geben Sie diesem Benutzer die vollständige Kontrolle über eine Datenbank. Datenbankbesitzer haben vollen Zugriff auf alle Daten in allen Tabellen, können CREATE/ALTER/DROPObjekte in der Datenbank abrufen usw. Dies kann je nach Ihren Anforderungen gut oder schlecht sein. Normalerweise setze ich alle Datenbankeigentümer auf "sa", um einen Standardeigentümer bereitzustellen. Da 'sa' bereits über Systemadministratorrechte verfügt, gewährt das Gewähren des Datenbankbesitzes keine eskalierte Sicherheit.

Mike Fal
quelle
Ich höre also, dass das Hinzufügen eines Besitzers zu einer Datenbank ohne ADDS nur Zugriffsrechte auf die Datenbank hinzufügt. Bestehende Rechte werden dadurch nicht beschädigt. Ist das korrekt? Dies scheint trivial offensichtlich. Ich würde das jedoch lieber wirklich verstehen, als mich zu entschuldigen.
bopapa_1979
@Eric Wenn der aktuelle Eigentümer ungültig ist, kann er möglicherweise nicht von Ihrer Anwendung verwendet werden. Woher kommt die Datenbank?
Aaron Bertrand
1

Ich schlage vor, dass Sie der Datenbank immer einen Eigentümer geben. Da sich einige Tools beschweren, wenn die Datenbank keinen Eigentümer hat, zum Beispiel das Diagramm-Tool .

Diagramm-Tool, Besitzer beschweren Bild Auch die Verwendung eines bereits leistungsstarken Benutzers wie "sa" für diesen Zweck ist besser, als Mike Fal vorgeschlagen hat.

Atilla Ozgur
quelle
Es gibt einen Unterschied zwischen KEINEM EIGENTÜMER und UNGÜLTIGEM EIGENTÜMER. Dies ist kein Fall von KEINEM EIGENTÜMER.
Aaron Bertrand