GRANT (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Erteilt einem Prinzipal Berechtigungen für ein sicherungsfähiges Element. Das allgemeine Konzept sieht folgendermaßen aus: GRANT <Berechtigung> ON <Objekt> TO <Benutzer, Anmeldename oder Gruppe>. Eine allgemeine Diskussion zu Berechtigungen finden Sie unter Berechtigungen (Datenbank-Engine).

Transact-SQL-Syntaxkonventionen

Syntax

-- Syntax for SQL Server and Azure SQL Database  
  
-- Simplified syntax for GRANT  
GRANT { ALL [ PRIVILEGES ] }  
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]  
      [ ON [ class :: ] securable ] TO principal [ ,...n ]   
      [ WITH GRANT OPTION ] [ AS principal ]  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
GRANT
    <permission> [ ,...n ]  
    [ ON [ <class_type> :: ] securable ]
    TO principal [ ,...n ]  
    [ WITH GRANT OPTION ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class_type> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

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 eines 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
Verwenden Sie die AS-Prinzipalklausel, um anzugeben, dass der Prinzipal, der die Berechtigung erteilt hat, ein anderer Prinzipal als die Person sein muss, die die Anweisung ausführt. Nehmen Sie beispielsweise an, dass die Benutzerin Mary der principal_id 12 und der Benutzer Raul der principal_id 15 entspricht. Mary führt GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; aus. Daraufhin gibt die Tabelle „sys.database_permissions“ an, dass die „grantor_prinicpal_id“ „15“ (Raul) entspricht, obwohl die Anweisung tatsächlich von Benutzer 12 (Mary) ausgeführt wurde.

Das Verwenden der AS-Klausel wird üblicherweise nicht empfohlen, sofern Sie nicht explizit die Berechtigungskette definieren müssen. Weitere Informationen finden Sie im Abschnitt Zusammenfassung des Algorithmus zur Berechtigungsprüfung unter Berechtigungen (Datenbank-Engine).

In dieser Anweisung impliziert die Verwendung von AS nicht die Fähigkeit, die Identität eines anderen Benutzers anzunehmen.

Bemerkungen

Die vollständige Syntax der GRANT-Anweisung ist sehr komplex. Das Syntaxdiagramm oben wurde vereinfacht, um die Struktur hervorzuheben. Die vollständige Syntax für das Erteilen von Berechtigungen für spezifische sicherungsfähige Elemente wird in den unten aufgeführten Artikeln 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.

Achtung

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 Element wird in einer späteren Version entfernt.

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

In Microsoft Fabric kann CREATE USER derzeit nicht explizit ausgeführt werden. Wenn GRANT oder DENY ausgeführt wird, wird der Benutzer automatisch erstellt.

WITH GRANT OPTION

GRANT ... WITH GRANT OPTION gibt an, dass der Sicherheitsprinzipal, der die Berechtigung erhält, die Fähigkeit erhält, anderen Sicherheitskonten die angegebene Berechtigung zu erteilen. Wenn 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 Benutzern gewährt werden muss, die keine Elemente der Gruppe oder der Rolle sind. Da nur ein Benutzer anstelle einer Gruppe oder Rolle eine GRANT-Anweisung ausführen kann, muss ein spezifisches Element der Gruppe oder Rolle die AS-Klausel verwenden, um die Rollen- oder Gruppenmitgliedschaft beim Gewähren der Berechtigung explizit aufzurufen. Das folgende Beispiel zeigt, wie die Option WITH GRANT OPTION verwendet wird, wenn sie einer Rolle oder einer Windows-Gruppe gewährt 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;  

Diagramm der SQL Server-Berechtigungen

Navigieren Sie zu https://aka.ms/sql-permissions-poster, um ein Diagramm aller Datenbank-Engine -Berechtigungen im PDF-Format abzurufen.

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 im Artikel zu 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, wie 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 in einer Datenbank, z. B. Mitglieder der festen Datenbankrolle db_owner, können jede Berechtigung für ein beliebiges sicherungsfähiges Element in der Datenbank erteilen. Empfänger der CONTROL-Berechtigung für ein Schema können jede beliebige Berechtigung für jedes Objekt innerhalb des Schemas erteilen.

Beispiele

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

Sicherungsfähiges Element GRANT-Syntax
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)
Verfügbarkeitsgruppe Erteilen von Verfügbarkeitsgruppenberechtigungen mit GRANT (Transact-SQL)
Zertifikat GRANT (Zertifikatberechtigungen) (Transact-SQL)
Vertrag GRANT (Berechtigungen von Service Broker) (Transact-SQL)
Datenbank GRANT (Datenbankberechtigungen) (Transact-SQL)
Datenbankweit gültige Anmeldeinformationen GRANT (Datenbankweit gültige Anmeldeinformationen) (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)
Anmeldename GRANT (Berechtigungen für Serverprinzipal) (Transact-SQL)
Nachrichtentyp GRANT (Berechtigungen von Service Broker) (Transact-SQL)
Object GRANT (Objektberechtigungen) (Transact-SQL)
Warteschlange GRANT (Objektberechtigungen) (Transact-SQL)
Remotedienstbindung GRANT (Berechtigungen von Service Broker) (Transact-SQL)
Role GRANT (Berechtigungen für Datenbankprinzipal) (Transact-SQL)
Route GRANT (Berechtigungen von Service Broker) (Transact-SQL)
Schema GRANT-Schemaberechtigungen (Transact-SQL)
Sucheigenschaftenliste GRANT-Sucheigenschaftenlisten-Berechtigungen (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)
Type GRANT (Typberechtigungen) (Transact-SQL)
Benutzer GRANT (Berechtigungen für Datenbankprinzipal) (Transact-SQL)
Sicht GRANT (Objektberechtigungen) (Transact-SQL)
XML-Schemasammlung GRANT (Berechtigungen für XML-Schemaauflistungen) (Transact-SQL)

Weitere Informationen