Unter MS SQL Server 2008 R2 muss ein Benutzer vorhanden sein, der DBCC CHECKDB erstellen, wiederherstellen und anschließend Datenbanken löschen kann. Er darf jedoch aus Sicherheitsgründen nicht auf bestimmte Datenbanken auf dem Server zugreifen oder diese löschen können. Ist dieses Setup möglich?
sql-server
sql-server-2008
Cicik
quelle
quelle
Antworten:
Ja, es ist durch ein paar Berechtigungen möglich.
Zum Erstellen einer Datenbank müssen Sie zunächst die Berechtigung auf Serverebene erteilen
Create Any Database
. Diese Berechtigung macht genau das, wonach es sich anhört - die Möglichkeit, eine Datenbank zu erstellen. Beachten Sie, dass dies dem Login nicht die feste Serverrolle von dbcreator verleiht, da diese feste Serverrolle Änderungs- / Löschberechtigungen für jede Datenbank erteilt.Create Any Database
Erlaubt dem Login, dass er nur die Macht über die Datenbanken hat, die er besitzt. Dies gibt auch die Möglichkeit zur Wiederherstellung.( Wenn Sie also NUR "Create Any Database" (Beliebige Datenbank erstellen ) ausführen, können Sie eine neue Datenbank erstellen. Sie können jedoch keine Datenbank löschen oder ändern , die Sie mit der festen Serverrolle "dbcreator" erhalten würden.)
So erteilen Sie die Berechtigung "Beliebige Datenbank erstellen":
Für das Ausführen
DBCC CHECKDB
und Löschen von Datenbanken ist die feste Datenbankrolle db_owner ausreichend. Dies gewährt alles, was Sie anfordern. Bitte beachten Sie: Sie gewähren diesem Benutzer auch die Möglichkeit, mit auszuwählen, zu löschen, abzuschneiden, zu aktualisieren und einzufügendb_owner
. Ich stelle mir das gerne insysadmin
einer Datenbank vor.Sie wenden diese Berechtigung nur auf die Datenbank an, für die Sie diese Funktion aktivieren möchten. Auf diese Weise können Sie steuern, welche Datenbanken der Benutzer ablegen, wiederherstellen oder überprüfen kann. Alle Datenbanken, für die Sie dem Benutzer diese Berechtigungen nicht erteilt haben, sind vor dem Ausführen dieser Aktionen durch diesen Benutzer geschützt
Dazu ordnen Sie zuerst die Anmeldung einem Datenbankbenutzer zu:
Fügen Sie dann diesen Benutzer der
db_owner
Rolle hinzu (funktioniert in SQL Server 2012 und höher):Für SQL Server 2008 müssten Sie die gespeicherte Systemprozedur verwenden, um ein Rollenmitglied als Kommentar hinzuzufügen.
Sie können dies alles auch über die GUI tun. Die Anmeldeinformationen, die Sie über den Sicherheitsordner in SSMS auf Instanzebene vornehmen würden: Klicken Sie mit der rechten Maustaste auf Login -> Eigenschaften -> Securables. Für die Datenbankebene würden Sie dies über den Sicherheitsordner auf Datenbankebene tun: Klicken Sie mit der rechten Maustaste und wählen Sie einen neuen Benutzer aus -> wählen Sie das Login, das Sie als Benutzer verwenden möchten, aus der Liste der Serveranmeldungen aus / geben Sie dem Datenbankbenutzer einen Namen -> gehen Sie zu Wählen Sie auf der Registerkarte Mitgliedschaft die Rollenmitgliedschaft aus.
Das Hilfesystem von SQL Server, die Onlinedokumentation, ist auch für die meisten Fragen zu Berechtigungen eine hervorragende Ressource - wenn Sie feststellen, dass Sie andere Berechtigungen zuweisen müssen. Suchen Sie einfach nach dem T-SQL-Befehl, dem Sie Berechtigungen erteilen möchten. In der Regel enthält der Artikel einen Abschnitt Berechtigungen für diesen Befehl, in dem Sie erfahren, welche Berechtigungen für diese Aktion erforderlich sind. Sie können sich den Artikel für DBCC CHECKDB als Beispiel ansehen - ungefähr 7/8 des Artikels ist der Berechtigungsabschnitt.
quelle
ALTER ROLE [db_owner] ADD MEMBER [frank]
nur mit SQL Server 2012 funktioniert. Wenn Sie mit SQL Server 2008 arbeiten, sollten Sie den SP verwenden:EXEC sp_addrolemember 'db_owner', 'frank';
(