GRANT (Transact-SQL)GRANT (Transact-SQL)

GILT FÜR: jaSQL Server jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Erteilt einem Prinzipal Berechtigungen für ein sicherungsfähiges Element.Grants permissions on a securable to a principal. Das allgemeine Konzept sieht folgendermaßen aus: GRANT <Berechtigung> ON <Objekt> TO <Benutzer, Anmeldename oder Gruppe>.The general concept is to GRANT <some permission> ON <some object> TO <some user, login, or group>. Eine allgemeine Diskussion zu Berechtigungen finden Sie unter Berechtigungen (Datenbank-Engine).For a general discussion of permissions, see Permissions (Database Engine).

Artikellinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Article link icon Transact-SQL Syntax Conventions

SyntaxSyntax

-- 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 SQL Data Warehouse and Parallel Data Warehouse  
  
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  
}  

ArgumenteArguments

ALLALL
Diese Option ist als veraltet markiert und wird nur aus Gründen der Abwärtskompatibilität beibehalten.This option is deprecated and maintained only for backward compatibility. Damit werden nicht alle möglichen Berechtigungen erteilt.It does not grant all possible permissions. Das Erteilen mit ALL entspricht dem Erteilen der folgenden Berechtigungen:Granting ALL is equivalent to granting the following permissions:

  • 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.If the securable is a database, ALL means BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, and CREATE VIEW.

  • Falls es sich beim sicherungsfähigen Element um eine skalare Funktion handelt, schließt ALL die Berechtigungen EXECUTE und REFERENCES ein.If the securable is a scalar function, ALL means EXECUTE and REFERENCES.

  • Falls es sich beim sicherungsfähigen Element um eine Tabellenwertfunktion handelt, schließt ALL die Berechtigungen DELETE, INSERT, REFERENCES, SELECT und UPDATE ein.If the securable is a table-valued function, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • Falls es sich beim sicherungsfähigen Element um eine gespeicherte Prozedur handelt, steht ALL für EXECUTE.If the securable is a stored procedure, ALL means EXECUTE.

  • Falls es sich beim sicherungsfähigen Element um eine Tabelle handelt, schließt ALL die Berechtigungen DELETE, INSERT, REFERENCES, SELECT und UPDATE ein.If the securable is a table, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • Falls es sich beim sicherungsfähigen Element um eine Sicht handelt, schließt ALL die Berechtigungen DELETE, INSERT, REFERENCES, SELECT und UPDATE ein.If the securable is a view, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

PRIVILEGESPRIVILEGES
Aus Gründen der Kompatibilität mit ISO eingeschlossen.Included for ISO compliance. Ändert das Verhalten von ALL nicht.Does not change the behavior of ALL.

permissionpermission
Der Name einer Berechtigung.Is the name of a permission. Die gültigen Zuordnungen von Berechtigungen zu sicherungsfähigen Elementen sind in den im Folgenden aufgeführten untergeordneten Themen beschrieben.The valid mappings of permissions to securables are described in the subtopics listed below.

columncolumn
Gibt den Namen einer Spalte in einer Tabelle an, für die Berechtigungen erteilt werden.Specifies the name of a column in a table on which permissions are being granted. Die Klammern () sind erforderlich.The parentheses () are required.

classclass
Gibt die Klasse des sicherungsfähigen Elements an, für das die Berechtigung erteilt wird.Specifies the class of the securable on which the permission is being granted. Der Bereichsqualifizierer :: ist erforderlich.The scope qualifier :: is required.

securablesecurable
Gibt das sicherungsfähige Element an, für das die Berechtigung erteilt wird.Specifies the securable on which the permission is being granted.

TO principalTO principal
Der Name eines Prinzipals.Is the name of a principal. 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.The principals to which permissions on a securable can be granted vary, depending on the securable. Gültige Kombinationen finden Sie in den folgenden Unterthemen.See the subtopics listed below for valid combinations.

GRANT OPTIONGRANT OPTION
Gibt an, dass der Empfänger die angegebene Berechtigung auch anderen Prinzipalen erteilen kann.Indicates that the grantee will also be given the ability to grant the specified permission to other principals.

AS principalAS 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.Use the AS principal clause to indicate that the principal recorded as the grantor of the permission should be a principal other than the person executing the statement. Nehmen Sie beispielsweise an, dass der Benutzer Mary der principal_id 12 und der Benutzer Raul der principal_id 15 entspricht.For example, presume that user Mary is principal_id 12 and user Raul is principal 15. 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.Mary executes GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Now the sys.database_permissions table will indicate that the grantor_prinicpal_id was 15 (Raul) even though the statement was actually executed by user 13 (Mary).

Das Verwenden der AS-Klausel wird üblicherweise nicht empfohlen, sofern Sie nicht explizit die Berechtigungskette definieren müssen.Using the AS clause is typically not recommended unless you need to explicitly define the permission chain. Weitere Informationen finden Sie im Abschnitt Zusammenfassung des Algorithmus zur Berechtigungsprüfung unter Berechtigungen (Datenbank-Engine).For more information, see the Summary of the Permission Check Algorithm section of Permissions (Database Engine).

In dieser Anweisung impliziert die Verwendung von AS nicht die Fähigkeit, die Identität eines anderen Benutzers anzunehmen.The use of AS in this statement does not imply the ability to impersonate another user.

RemarksRemarks

Die vollständige Syntax der GRANT-Anweisung ist sehr komplex.The full syntax of the GRANT statement is complex. Das Syntaxdiagramm oben wurde vereinfacht, um die Struktur hervorzuheben.The syntax diagram above was simplified to draw attention to its structure. Die vollständige Syntax für das Erteilen von Berechtigungen für spezifische sicherungsfähige Elemente wird in den unten aufgeführten Artikeln beschrieben.Complete syntax for granting permissions on specific securables is described in the articles listed below.

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.The REVOKE statement can be used to remove granted permissions, and the DENY statement can be used to prevent a principal from gaining a specific permission through a GRANT.

Durch das Erteilen einer Berechtigung wird DENY oder REVOKE für diese Berechtigung aus dem angegebenen sicherungsfähigen Element entfernt.Granting a permission removes DENY or REVOKE of that permission on the specified securable. Falls dieselbe Berechtigung aus einem höheren Bereich als dem des sicherungsfähigen Elements verweigert wird, hat DENY Vorrang.If the same permission is denied at a higher scope that contains the securable, the DENY takes precedence. Das Aufheben der erteilten Berechtigung in einem höheren Bereich hat jedoch keinen Vorrang.But revoking the granted permission at a higher scope does not take precedence.

Berechtigungen auf Datenbankebene werden innerhalb des Bereichs der angegebenen Datenbank erteilt.Database-level permissions are granted within the scope of the specified database. 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.If a user needs permissions to objects in another database, create the user account in the other database, or grant the user account access to the other database, as well as the current database.

Achtung

Eine DENY-Anweisung auf Tabellenebene hat keinen Vorrang vor einer GRANT-Anweisung auf Spaltenebene.A table-level DENY does not take precedence over a column-level GRANT. Diese Inkonsistenz in der Berechtigungshierarchie wurde aus Gründen der Abwärtskompatibilität beibehalten.This inconsistency in the permissions hierarchy has been preserved for the sake of backward compatibility. Dieses Verhalten wird in einer zukünftigen Version entfernt.It will be removed in a future release.

Die gespeicherte Systemprozedur sp_helprotect gibt Informationen zu Berechtigungen für sicherungsfähige Elemente auf Datenbankebene zurück.The sp_helprotect system stored procedure reports permissions on a database-level securable.

WITH GRANT OPTIONWITH 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.The GRANT ... WITH GRANT OPTION specifies that the security principal receiving the permission is given the ability to grant the specified permission to other security accounts. 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.When the principal that receives the permission is a role or a Windows group, the AS clause must be used when the object permission needs to be further granted to users who are not members of the group or role. 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.Because only a user, rather than a group or role, can execute a GRANT statement, a specific member of the group or role must use the AS clause to explicitly invoke the role or group membership when granting the permission. Das folgende Beispiel zeigt, wie die Option WITH GRANT OPTION verwendet wird, wenn sie einer Rolle oder einer Windows-Gruppe gewährt wird.The following example shows how the WITH GRANT OPTION is used when granted to a role or Windows group.

-- 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-BerechtigungenChart of SQL Server Permissions

Navigieren Sie zu https://aka.ms/sql-permissions-poster, um ein Diagramm aller Datenbank-EngineDatabase Engine -Berechtigungen im PDF-Format abzurufen.For a poster sized chart of all Datenbank-EngineDatabase Engine permissions in pdf format, see https://aka.ms/sql-permissions-poster.

BerechtigungenPermissions

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.The grantor (or the principal specified with the AS option) must have either the permission itself with GRANT OPTION, or a higher permission that implies the permission being granted. Falls die AS-Option verwendet wird, gelten zusätzliche Anforderungen.If using the AS option, additional requirements apply. Weitere Informationen hierzu finden Sie im Artikel zu sicherungsfähigen Elementen.See the securable-specific article for details.

Objektbesitzer können Berechtigungen für die Objekte erteilen, die sie besitzen.Object owners can grant permissions on the objects they own. Prinzipale mit CONTROL-Berechtigung für ein sicherungsfähiges Element können die Berechtigung für dieses sicherungsfähige Element erteilen.Principals with CONTROL permission on a securable can grant permission on that securable.

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.Grantees of CONTROL SERVER permission, such as members of the sysadmin fixed server role, can grant any permission on any securable in the server. 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.Grantees of CONTROL permission on a database, such as members of the db_owner fixed database role, can grant any permission on any securable in the database. Empfänger der CONTROL-Berechtigung für ein Schema können jede beliebige Berechtigung für jedes Objekt innerhalb des Schemas erteilen.Grantees of CONTROL permission on a schema can grant any permission on any object within the schema.

BeispieleExamples

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.The following table lists the securables and the articles that describe the securable-specific syntax.

AnwendungsrolleApplication Role GRANT (Berechtigungen für Datenbankprinzipal) (Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
AssemblyAssembly GRANT (Assemblyberechtigungen) (Transact-SQL)GRANT Assembly Permissions (Transact-SQL)
Asymmetrischer SchlüsselAsymmetric Key GRANT (Berechtigungen für asymmetrische Schlüssel) (Transact-SQL)GRANT Asymmetric Key Permissions (Transact-SQL)
VerfügbarkeitsgruppeAvailability Group GRANT (Verfügbarkeitsgruppenberechtigungen) (Transact-SQL)GRANT Availability Group Permissions (Transact-SQL)
ZertifikatCertificate GRANT (Zertifikatberechtigungen) (Transact-SQL)GRANT Certificate Permissions (Transact-SQL)
VertragContract GRANT (Berechtigungen von Service Broker) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
DatenbankDatabase GRANT (Datenbankberechtigungen) ((Transact-SQL)GRANT Database Permissions (Transact-SQL)
Datenbankweit gültige AnmeldeinformationenDatabase Scoped Credential GRANT (Datenbankweit gültige Anmeldeinformationen) (Transact-SQL)GRANT Database Scoped Credential (Transact-SQL)
EndpunktEndpoint GRANT (Endpunktberechtigungen) (Transact-SQL)GRANT Endpoint Permissions (Transact-SQL)
VolltextkatalogFull-Text Catalog GRANT (Volltextberechtigungen) (Transact-SQL)GRANT Full-Text Permissions (Transact-SQL)
Volltext-StopplisteFull-Text Stoplist GRANT (Volltextberechtigungen) (Transact-SQL)GRANT Full-Text Permissions (Transact-SQL)
FunktionFunction GRANT (Objektberechtigungen) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
AnmeldenameLogin GRANT (Berechtigungen für Serverprinzipal) (Transact-SQL)GRANT Server Principal Permissions (Transact-SQL)
NachrichtentypMessage Type GRANT (Berechtigungen von Service Broker) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
ObjektObject GRANT (Objektberechtigungen) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
WarteschlangeQueue GRANT (Objektberechtigungen) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
RemotedienstbindungRemote Service Binding GRANT (Berechtigungen von Service Broker) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
RolleRole GRANT (Berechtigungen für Datenbankprinzipal) (Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
RouteRoute GRANT (Berechtigungen von Service Broker) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
SchemaSchema GRANT (Schemaberechtigungen) (Transact-SQL)GRANT Schema Permissions (Transact-SQL)
SucheigenschaftenlisteSearch Property List GRANT (Berechtigungen für Sucheigenschaftenlisten) (Transact-SQL)GRANT Search Property List Permissions (Transact-SQL)
ServerServer GRANT (Serverberechtigungen) (Transact-SQL)GRANT Server Permissions (Transact-SQL)
DienstService GRANT (Berechtigungen von Service Broker) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
Gespeicherte ProzedurStored Procedure GRANT (Objektberechtigungen) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
Symmetrischer SchlüsselSymmetric Key GRANT (Berechtigungen für symmetrische Schlüssel) (Transact-SQL)GRANT Symmetric Key Permissions (Transact-SQL)
SynonymSynonym GRANT (Objektberechtigungen) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
SystemobjekteSystem Objects GRANT (Berechtigungen für Systemobjekte) (Transact-SQL)GRANT System Object Permissions (Transact-SQL)
TabelleTable GRANT (Objektberechtigungen) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
TypType GRANT (Typberechtigungen) (Transact-SQL)GRANT Type Permissions (Transact-SQL)
BenutzerUser GRANT (Berechtigungen für Datenbankprinzipal) (Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
SichtView GRANT (Objektberechtigungen) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
XML-SchemasammlungXML Schema Collection GRANT (Berechtigungen für XML-Schemaauflistungen) (Transact-SQL)GRANT XML Schema Collection Permissions (Transact-SQL)

Weitere InformationenSee Also

DENY (Transact-SQL) DENY (Transact-SQL)
REVOKE (Transact-SQL) REVOKE (Transact-SQL)
sp_addlogin (Transact-SQL) sp_addlogin (Transact-SQL)
sp_adduser (Transact-SQL) sp_adduser (Transact-SQL)
sp_changedbowner (Transact-SQL) sp_changedbowner (Transact-SQL)
sp_dropuser (Transact-SQL) sp_dropuser (Transact-SQL)
sp_helprotect (Transact-SQL) sp_helprotect (Transact-SQL)
sp_helpuser (Transact-SQL)sp_helpuser (Transact-SQL)