Ich bin sehr grün, wenn es um die Welt der Datenbankberechtigungsverwaltung in SQL Server geht.

Lassen Sie uns ein Beispiel behalten einfach.

Sagen Sie, Konto „admin“ ist der Eigentümer der Schemas A, B und C.

Es gibt ein anderes Konto „minion“, für das Sie die vollen Rechte haben möchten (Aktualisieren / Löschen / Einfügen / Auswählen / Ändern) für jedes Objekt (Tabelle / Ansicht), das unter den Schemas A, B und C erstellt wurde.

Ist dies möglich? Oder müssen Sie jedes Mal eine Grant-Anweisung ausführen, wenn Sie eine Tabelle / Ansicht unter diesen Schemas hinzufügen? (scheint mir ein bisschen albern).

Antwort

Sie können GRANT Schemaberechtigungen, die für alle in diesem Schema vorhandenen und alle in diesem Schema vorhandenen wirksam sind.

Schema-Berechtigungen erteilen

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>; 

Darüber hinaus, wenn Sie dann Berechtigungen für eine bestimmte Berechtigung verweigern möchten Objekt innerhalb dieses Schemas können Sie tun.

Verweigern von Objektberechtigungen

DENY INSERT ON OBJECT::<schema>.<object> TO <user>; 

Kommentare

  • Verwenden Sie auch eckige Klammern, wenn das Schema oder der Benutzername Sonderzeichen enthält. Beispiel: .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • Funktioniert ' in Azure nicht. (Die Befehle funktionieren, aber SSMS wird angezeigt und sagt ", dass Sie nicht der Datenbankbesitzer sind. bla bla bla. Möglicherweise können Sie die Tabelle und sicher können Sie ' t (hat der Datenbank ALL gewährt (zeigt Berechtigungen ' Datenbank ', ' < Datenbankname > ', TheUserId, ' Tabelle erstellen ' und state_desc von ' GRANT ') Gibt es eine andere Magie, die benötigt wird? Oder kann Azure nur vom Dbo verwendet werden?

Antwort

Zur weiteren Vereinfachung können Sie Rollen verwenden, um die gesuchte Aufgabe zu erledigen.

Sobald Sie zugewiesen haben Berechtigungen für die Rolle können Sie einfach Benutzer zur Rolle hinzufügen. Auf diese Weise müssen Sie keine Berechtigungen für einzelne Benutzer verwalten. Die Benutzer erben Berechtigungen, die der Rolle erteilt wurden.

Nachfolgend finden Sie ein Beispiel für den Einstieg:

 -- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.