GRANT (Transact-SQL)

Erteilt einem Prinzipal Berechtigungen für ein sicherungsfähiges Element. Das allgemeine Konzept lautet dabei wie folgt: GRANT <eine Berechtigung> ON <ein Objekt> TO <Benutzer, Anmeldename oder Gruppe>. Eine allgemeine Beschreibung der Berechtigungen finden Sie unter Berechtigungen (Datenbankmodul).

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]
      [ ON [ class :: ] securable ] TO principal [ ,...n ] 
      [ WITH GRANT OPTION ] [ AS principal ]

Argumente

  • ALL
    Diese Option ist als veraltet markiert und wird nur aus Gründen der Abwärtskompatibilität beibehalten. Damit werden nicht alle möglichen Berechtigungen erteilt. Das Erteilen mit ALL entspricht dem Erteilen der folgenden Berechtigungen.

    • Falls es sich beim sicherungsfähigen Element um eine Datenbank handelt, schließt ALL die Berechtigungen BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE und CREATE VIEW ein.

    • Falls es sich beim sicherungsfähigen Element um eine skalare Funktion handelt, schließt ALL die Berechtigungen EXECUTE und REFERENCES ein.

    • Falls es sich beim sicherungsfähigen Element um eine Tabellenwertfunktion handelt, schließt ALL die Berechtigungen DELETE, INSERT, REFERENCES, SELECT und UPDATE ein.

    • Falls es sich beim sicherungsfähigen Element um eine gespeicherte Prozedur handelt, steht ALL für EXECUTE.

    • Falls es sich beim sicherungsfähigen Element um eine Tabelle handelt, schließt ALL die Berechtigungen DELETE, INSERT, REFERENCES, SELECT und UPDATE ein.

    • Falls es sich beim sicherungsfähigen Element um eine Sicht handelt, schließt ALL die Berechtigungen DELETE, INSERT, REFERENCES, SELECT und UPDATE ein.

  • PRIVILEGES
    Aus Gründen der Kompatibilität mit ISO eingeschlossen. Ändert das Verhalten von ALL nicht.

  • permission
    Der Name einer Berechtigung. Die gültigen Zuordnungen von Berechtigungen zu sicherungsfähigen Elementen sind in den im Folgenden aufgeführten untergeordneten Themen beschrieben.

  • column
    Gibt den Namen einer Spalte in einer Tabelle an, für die Berechtigungen erteilt werden. Die Klammern "()" sind erforderlich.

  • class
    Gibt die Klasse des sicherungsfähigen Elements an, für das die Berechtigung erteilt wird. Der Bereichsqualifizierer "::" ist erforderlich.

  • securable
    Gibt das sicherungsfähige Element an, für das die Berechtigung erteilt wird.

  • TO principal
    Der Name des Prinzipals. Die Prinzipale, für die Berechtigungen für ein sicherungsfähiges Element erteilt werden können, sind abhängig vom jeweiligen sicherungsfähigen Element unterschiedlich. Gültige Kombinationen finden Sie in den folgenden Unterthemen.

  • GRANT OPTION
    Gibt an, dass der Empfänger die angegebene Berechtigung auch anderen Prinzipalen erteilen kann.

  • AS principal
    Gibt einen Prinzipal an, von dem der Prinzipal, der diese Abfrage ausführt, sein Recht zum Erteilen der Berechtigung ableitet.

Hinweise

Die vollständige Syntax der GRANT-Anweisung ist sehr komplex. Das obige Syntaxdiagramm wurde vereinfacht, um die Aufmerksamkeit auf die Struktur zu lenken. Die vollständige Syntax für das Erteilen von Berechtigungen für spezifische sicherungsfähige Elemente wird in den unten aufgeführten Themen beschrieben.

Die REVOKE-Anweisung kann zum Entfernen von erteilten Berechtigungen verwendet werden, und mit der DENY-Anweisung kann verhindert werden, dass einem Prinzipal eine spezifische Berechtigung durch eine GRANT-Anweisung erteilt wird.

Durch das Erteilen einer Berechtigung wird DENY oder REVOKE für diese Berechtigung aus dem angegebenen sicherungsfähigen Element entfernt. Falls dieselbe Berechtigung aus einem höheren Bereich als dem des sicherungsfähigen Elements verweigert wird, hat DENY Vorrang. Das Aufheben der erteilten Berechtigung in einem höheren Bereich hat jedoch keinen Vorrang.

Berechtigungen auf Datenbankebene werden innerhalb des Bereichs der angegebenen Datenbank erteilt. Wenn ein Benutzer Berechtigungen für Objekte in einer anderen Datenbank benötigt, erstellen Sie das Benutzerkonto in der anderen Datenbank oder erteilen dem Benutzerkonto Zugriff auf die aktuelle Datenbank und auf die andere Datenbank.

VorsichtshinweisVorsicht

Eine DENY-Anweisung auf Tabellenebene hat keinen Vorrang vor einer GRANT-Anweisung auf Spaltenebene. Diese Inkonsistenz in der Berechtigungshierarchie wurde aus Gründen der Abwärtskompatibilität beibehalten. Dieses Verhalten wird in einer zukünftigen Version entfernt.

Die gespeicherte Systemprozedur sp_helprotect gibt Informationen zu Berechtigungen für sicherungsfähige Elemente auf Datenbankebene zurück.

WITH GRANT OPTION

GRANT … WITH GRANT OPTION gibt an, dass der Sicherheitsprinzipal, der die Berechtigung erhält, die angegebene Berechtigung anderen Dienstkonten erteilen kann. Falls es sich bei dem Prinzipal, der die Berechtigung erhält, um eine Rolle oder eine Windows-Gruppe handelt, muss die AS-Klausel verwendet werden, wenn die Objektberechtigung weiteren Benutzern erteilt werden muss, die nicht Mitglieder der Gruppe oder Rolle sind. Da eine GRANT-Anweisung nicht von einer Gruppe oder Rolle, sondern nur von einem Benutzer ausgeführt werden kann, muss ein bestimmtes Mitglied der Gruppe oder Rolle die AS-Klausel verwenden, um die Rollen- bzw. Gruppenmitgliedschaft beim Erteilen der Berechtigung explizit aufzurufen. Das folgende Beispiel zeigt, wie WITH GRANT OPTION beim Erteilen einer Berechtigung für eine Rolle oder Windows-Gruppe verwendet wird.

-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION
EXEC sp_addrolemember TesterRole, User1;
-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestMe TO User2;
-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestMe TO User2 AS TesterRole;

Übersicht über SQL Server-Berechtigungen

Eine Übersicht aller Database Engine (Datenbankmodul)-Berechtigungen im PDF-Posterformat finden Sie unter https://go.microsoft.com/fwlink/?LinkId=229142.

Berechtigungen

Der Berechtigende (oder der mit der AS-Option angegebene Prinzipal) benötigt entweder die Berechtigung selbst mit GRANT OPTION oder eine höhere Berechtigung, die die erteilte Berechtigung impliziert. Falls die AS-Option verwendet wird, gelten zusätzliche Anforderungen. Weitere Informationen hierzu finden Sie in den Themen zu einzelnen sicherungsfähigen Elementen.

Objektbesitzer können Berechtigungen für die Objekte erteilen, die sie besitzen. Prinzipale mit CONTROL-Berechtigung für ein sicherungsfähiges Element können die Berechtigung für dieses sicherungsfähige Element erteilen.

Empfänger der CONTROL SERVER-Berechtigung, z. B. Mitglieder der festen Serverrolle sysadmin, können jede beliebige Berechtigung für jedes beliebige sicherungsfähige Element auf dem Server erteilen. Empfänger der CONTROL-Berechtigung für eine Datenbank, z. B. Mitglieder der festen Datenbankrolle db_owner, können jede Berechtigung für ein beliebiges sicherungsfähiges Element in der Datenbank erteilen. Berechtigte der CONTROL-Berechtigung für ein Schema können jede beliebige Berechtigung für jedes Objekt innerhalb des Schemas erteilen.

Beispiel

In der folgenden Tabelle sind die sicherungsfähigen Elemente und Themen aufgeführt, in denen die für ein sicherungsfähiges Element spezifische Syntax beschrieben wird.

Anwendungsrolle

GRANT (Berechtigungen für Datenbankprinzipal) (Transact-SQL)

Assembly

GRANT-Assemblyberechtigungen (Transact-SQL)

Asymmetrischer Schlüssel

GRANT (Berechtigungen für asymmetrische Schlüssel) (Transact-SQL)

Zertifikat

GRANT (Zertifikatberechtigungen) (Transact-SQL)

Vertrag

GRANT (Berechtigungen von Service Broker) (Transact-SQL)

Datenbank

GRANT (Datenbankberechtigungen) (Transact-SQL)

Endpunkt

GRANT (Endpunktberechtigungen) (Transact-SQL)

Volltextkatalog

GRANT-Berechtigungen für Volltext (Transact-SQL)

Volltext-Stoppliste

GRANT-Berechtigungen für Volltext (Transact-SQL)

Funktion

GRANT (Objektberechtigungen) (Transact-SQL)

Anmeldung

GRANT (Berechtigungen für Serverprinzipal) (Transact-SQL)

Nachrichtentyp

GRANT (Berechtigungen von Service Broker) (Transact-SQL)

Objekt

GRANT (Objektberechtigungen) (Transact-SQL)

Warteschlange

GRANT (Objektberechtigungen) (Transact-SQL)

Remotedienstbindung

GRANT (Berechtigungen von Service Broker) (Transact-SQL)

Rolle

GRANT (Berechtigungen für Datenbankprinzipal) (Transact-SQL)

Route

GRANT (Berechtigungen von Service Broker) (Transact-SQL)

Schema

GRANT-Schemaberechtigungen (Transact-SQL)

Server

GRANT (Serverberechtigungen) (Transact-SQL)

Dienst

GRANT (Berechtigungen von Service Broker) (Transact-SQL)

Gespeicherte Prozedur

GRANT (Objektberechtigungen) (Transact-SQL)

Symmetrischer Schlüssel

GRANT (Berechtigungen für symmetrische Schlüssel) (Transact-SQL)

Synonym

GRANT (Objektberechtigungen) (Transact-SQL)

Systemobjekte

GRANT (Berechtigungen für Systemobjekte) (Transact-SQL)

Tabelle

GRANT (Objektberechtigungen) (Transact-SQL)

Typ

GRANT (Typberechtigungen) (Transact-SQL)

Benutzer

GRANT (Berechtigungen für Datenbankprinzipal) (Transact-SQL)

Sicht

GRANT (Objektberechtigungen) (Transact-SQL)

XML-Schemaauflistung

GRANT (Berechtigungen für XML-Schemaauflistungen) (Transact-SQL)