Freigeben über


GRANT (Datenbankberechtigungen) (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Erteilt Berechtigungen für eine Datenbank in SQL Server.

Transact-SQL-Syntaxkonventionen

Syntax


GRANT <permission> [ ,...n ]
    TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]
    [ AS <database_principal> ]

<permission>::=
permission | ALL [ PRIVILEGES ]

<database_principal> ::=
    Database_user
  | Database_role
  | Application_role
  | Database_user_mapped_to_Windows_User
  | Database_user_mapped_to_Windows_Group
  | Database_user_mapped_to_certificate
  | Database_user_mapped_to_asymmetric_key
  | Database_user_with_no_login

Arguments

permission Gibt eine Berechtigung an, die für eine Datenbank erteilt werden kann. Eine Liste der Berechtigungen finden Sie im Abschnitt zu den Hinweisen weiter unten in diesem Thema.

ALL Mit dieser Option werden nicht alle möglichen Berechtigungen erteilt. Das Erteilen mit ALL entspricht dem Erteilen der folgenden Berechtigungen: BACKUP DATABASE, BACKUP LOG, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE und CREATE VIEW.

PRIVILEGES Aus Gründen der Kompatibilität mit ANSI-92 eingeschlossen. Ändert das Verhalten von ALL nicht.

WITH GRANT OPTION Gibt an, dass der Prinzipal die angegebene Berechtigung auch anderen Prinzipalen erteilen kann.

AS <Datenbankprinzipal> gibt einen Prinzipal an, von dem der Prinzipal, der diese Abfrage ausführt, sein Recht zum Zuweisen der Berechtigung ableitet.

Database_user Gibt einen Datenbankbenutzer an.

Database_role Gibt eine Datenbankrolle an.

Application_roleGilt für: SQL Server 2008 (10.0.x) und höher sowie SQL-Datenbank

Gibt eine Anwendungsrolle an.

Database_user_mapped_to_Windows_UserGilt für: SQL Server 2008 (10.0.x) und höher

Gibt einen Datenbankbenutzer an, der einem Windows-Benutzer zugeordnet ist.

Database_user_mapped_to_Windows_GroupGilt für: SQL Server 2008 (10.0.x) und höher

Gibt einen Datenbankbenutzer an, der einer Windows-Gruppe zugeordnet ist.

Database_user_mapped_to_certificateGilt für: SQL Server 2008 (10.0.x) und höher

Gibt einen Datenbankbenutzer an, der einem Zertifikat zugeordnet ist.

Database_user_mapped_to_asymmetric_keyGilt für: SQL Server 2008 (10.0.x) und höher

Gibt einen Datenbankbenutzer an, der einem asymmetrischen Schlüssel zugeordnet ist.

Database_user_with_no_login Gibt einen Datenbankbenutzer ohne entsprechenden Prinzipal auf Serverebene an.

Remarks

Important

Durch eine Kombination von ALTER- und REFERENCE-Berechtigungen würde in manchen Fällen zugelassen, dass der Empfänger Daten anzeigt oder Funktionen ausführt, für die er nicht autorisiert ist. Beispiel: Ein Benutzer mit ALTER-Berechtigung für eine Tabelle und REFERENCE-Berechtigung für eine Funktion kann eine berechnete Spalte für eine Funktion erstellen und ausführen lassen. In diesem Fall benötigt der Benutzer auch die SELECT-Berechtigung für die berechnete Spalte.

Eine Datenbank ist ein sicherungsfähiges Element auf dem Server, der das übergeordnete Element in der Berechtigungshierarchie ist. Die spezifischsten und restriktivsten Berechtigungen, die für eine Datenbank erteilt werden können, sind in der folgenden Tabelle aufgeführt. Außerdem enthält die Tabelle die allgemeineren Berechtigungen, die implizit enthalten sind.

Datenbankberechtigung Impliziert durch Datenbankberechtigung Impliziert durch die Serverberechtigung
VERWALTEN VON BULK-OPERATIONEN IN DER DATENBANK
Gilt für: SQL-Datenbank
CONTROL Steuerungsserver
ALTER CONTROL ÄNDERN EINER BELIEBIGEN DATENBANK
ÄNDERN EINER BELIEBIGEN ANWENDUNGSROLLE ALTER Steuerungsserver
BELIEBIGE ASSEMBLY ÄNDERN ALTER Steuerungsserver
ÄNDERN EINES ASYMMETRISCHEN SCHLÜSSELS ALTER Steuerungsserver
ÄNDERN EINES BELIEBIGEN ZERTIFIKATS ALTER Steuerungsserver
ÄNDERN EINES BELIEBIGEN SPALTENVERSCHLÜSSELUNGSSCHLÜSSELS ALTER Steuerungsserver
ÄNDERN EINER BELIEBIGEN SPALTENMASTERSCHLÜSSELDEFINITION ALTER Steuerungsserver
ÄNDERN EINES VERTRAGS ALTER Steuerungsserver
ÄNDERN EINER DATENBANKÜBERWACHUNG ALTER ÄNDERN EINER SERVERÜBERWACHUNG
ÄNDERN EINES DATENBANK-DDL-TRIGGERS ALTER Steuerungsserver
Benachrichtigungen zu Datenbankereignissen ändern ALTER JEDES EREIGNISBENACHRICHTIGUNG ÄNDERN
ÄNDERN EINER DATENBANK-EREIGNISSESSION
Gilt für: SQL-Datenbank.
ALTER ÄNDERN EINER EREIGNISSITZUNG
ÄNDERN EINER DATENBANKBEREICHSKONFIGURATION
Gilt für: SQL Server 2016 (13.x) und höher, SQL-Datenbank.
CONTROL Steuerungsserver
ÄNDERN EINES BELIEBIGEN DATENBEREICHS ALTER Steuerungsserver
ÄNDERE JEDE EXTERNE DATENQUELLE ALTER Steuerungsserver
ÄNDERN EINES BELIEBIGEN EXTERNEN DATEIFORMATS ALTER Steuerungsserver
ÄNDERN EINER BELIEBIGEN EXTERNEN BIBLIOTHEK
Gilt für: SQL Server 2017 (14.x).
CONTROL Steuerungsserver
ÄNDERN EINES VOLLSTÄNDIGEN TEXTKATALOGS ALTER Steuerungsserver
BELIEBIGE MASKE ÄNDERN CONTROL Steuerungsserver
ÄNDERN EINES BELIEBIGEN NACHRICHTENTYPS ALTER Steuerungsserver
ÄNDERN JEDER REMOTE-DIENST-BINDUNG ALTER Steuerungsserver
ÄNDERN EINER BELIEBIGEN ROLLE ALTER Steuerungsserver
ÄNDERN EINER BELIEBIGEN ROUTE ALTER Steuerungsserver
ÄNDERN EINES BELIEBIGEN SCHEMAS ALTER Steuerungsserver
ÄNDERN EINER SICHERHEITSRICHTLINIE
Gilt für: Azure SQL-Datenbank.
CONTROL Steuerungsserver
ÄNDERN EINER VERTRAULICHKEITSKLASSIFIZIERUNG
Gilt für: SQL Server (SQL Server 2019 und höher), Azure SQL-Datenbank.
CONTROL Steuerungsserver
ÄNDERE JEDEN DIENST ALTER Steuerungsserver
ÄNDERN EINES SYMMETRISCHEN SCHLÜSSELS ALTER Steuerungsserver
ÄNDERN EINES BELIEBIGEN BENUTZERS ALTER Steuerungsserver
AUTHENTICATE CONTROL AUTHENTIFIZIEREN DES SERVERS
SICHERUNGSDATENBANK CONTROL Steuerungsserver
SICHERUNGSPROTOKOLL CONTROL Steuerungsserver
CHECKPOINT CONTROL Steuerungsserver
CONNECT VERBINDUNGSREPLIKATION Steuerungsserver
VERBINDUNGSREPLIKATION CONTROL Steuerungsserver
CONTROL CONTROL Steuerungsserver
AGGREGAT ERSTELLEN ALTER Steuerungsserver
ERSTELLEN EINER BELIEBIGEN EXTERNEN BIBLIOTHEK
Gilt für: SQL Server 2017 (14.x).
CONTROL Steuerungsserver
CREATE ASSEMBLY (Erstellen einer Assembly) BELIEBIGE ASSEMBLY ÄNDERN Steuerungsserver
ERSTELLEN EINES ASYMMETRISCHEN SCHLÜSSELS ÄNDERN EINES ASYMMETRISCHEN SCHLÜSSELS Steuerungsserver
ZERTIFIKAT ERSTELLEN ÄNDERN EINES BELIEBIGEN ZERTIFIKATS Steuerungsserver
VERTRAG ERSTELLEN ÄNDERN EINES VERTRAGS Steuerungsserver
DATENBANK ERSTELLEN CONTROL BELIEBIGE DATENBANK ERSTELLEN
CREATE-DATABASE-DDL-Ereignisbenachrichtigung Benachrichtigungen zu Datenbankereignissen ändern Ddl-Ereignisbenachrichtigung erstellen
STANDARD ERSTELLEN ALTER Steuerungsserver
FULLTEXT-KATALOG ERSTELLEN ÄNDERN EINES VOLLSTÄNDIGEN TEXTKATALOGS Steuerungsserver
CREATE-FUNKTION ALTER Steuerungsserver
NACHRICHTENTYP ERSTELLEN ÄNDERN EINES BELIEBIGEN NACHRICHTENTYPS Steuerungsserver
PROZEDUR ERSTELLEN ALTER Steuerungsserver
WARTESCHLANGE ERSTELLEN ALTER Steuerungsserver
ERSTELLEN EINER REMOTE-DIENSTBINDUNG ÄNDERN JEDER REMOTE-DIENST-BINDUNG Steuerungsserver
ROLLE ERSTELLEN ÄNDERN EINER BELIEBIGEN ROLLE Steuerungsserver
ROUTE ERSTELLEN ÄNDERN EINER BELIEBIGEN ROUTE Steuerungsserver
REGEL ERSTELLEN ALTER Steuerungsserver
SCHEMA ERSTELLEN ÄNDERN EINES BELIEBIGEN SCHEMAS Steuerungsserver
DIENST ERSTELLEN ÄNDERE JEDEN DIENST Steuerungsserver
SYMMETRISCHER SCHLÜSSEL ERSTELLEN ÄNDERN EINES SYMMETRISCHEN SCHLÜSSELS Steuerungsserver
SYNONYM ERSTELLEN ALTER Steuerungsserver
CREATE TABLE ALTER Steuerungsserver
TYPE ERSTELLEN ALTER Steuerungsserver
ANSICHT ERSTELLEN ALTER Steuerungsserver
ERSTELLEN EINER XML-SCHEMAAUFLISTUNG ALTER Steuerungsserver
DELETE CONTROL Steuerungsserver
EXECUTE CONTROL Steuerungsserver
AUSFÜHREN EINES BELIEBIGEN EXTERNEN ENDPUNKTS
Gilt für: Azure SQL-Datenbank.
CONTROL Steuerungsserver
AUSFÜHREN EINES BELIEBIGEN EXTERNEN SKRIPTS
Gilt für: SQL Server 2016 (13.x).
CONTROL Steuerungsserver
EXTERNES SKRIPT AUSFÜHREN
Gilt für: SQL Server 2019 (15.x).
AUSFÜHREN EINES BELIEBIGEN EXTERNEN SKRIPTS Steuerungsserver
INSERT CONTROL Steuerungsserver
Verbindung zur Datenbank beenden
Gilt für: Azure SQL-Datenbank.
CONTROL ÄNDERN EINER BELIEBIGEN VERBINDUNG
REFERENCES CONTROL Steuerungsserver
SELECT CONTROL Steuerungsserver
SHOWPLAN CONTROL ALTER TRACE
ABONNIEREN VON ABFRAGEBENACHRICHTIGUNGEN CONTROL Steuerungsserver
ÜBERNEHMEN EIGENTUM CONTROL Steuerungsserver
UNMASK CONTROL Steuerungsserver
UPDATE CONTROL Steuerungsserver
ANZEIGEN EINER BELIEBIGEN SPALTENVERSCHLÜSSELUNGSSCHLÜSSELDEFINITION CONTROL Jede Definition ansehen
ANZEIGE JEDER SPALTEN-MASTERSCHLÜSSELDEFINITION CONTROL Jede Definition ansehen
DATENBANKSTATUS ANZEIGEN CONTROL SERVERSTATUS ANZEIGEN
Darstellungsdefinition CONTROL Jede Definition ansehen

Permissions

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 die folgenden zusätzlichen Anforderungen.

SO granting_principal Zusätzliche Berechtigung erforderlich
Datenbankbenutzer IMPERSONATE-Berechtigung für den Benutzer, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.
Einem Windows-Anmeldenamen zugeordneter Datenbankbenutzer IMPERSONATE-Berechtigung für den Benutzer, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.
Einer Windows-Gruppe zugeordneter Datenbankbenutzer Mitgliedschaft in der Windows-Gruppe, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.
Einem Zertifikat zugeordneter Datenbankbenutzer Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.
Einem asymmetrischen Schlüssel zugeordneter Datenbankbenutzer Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.
Einem Serverprinzipal zugeordneter Datenbankbenutzer IMPERSONATE-Berechtigung für den Benutzer, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.
Datenbankrolle ALTER-Berechtigung für die Rolle, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.
Anwendungsrolle ALTER-Berechtigung für die Rolle, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.

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.

Examples

A. Erteilen der Berechtigung zum Erstellen von Tabellen

Im folgenden Beispiel wird die CREATE TABLE-Berechtigung für die AdventureWorks-Datenbank dem Benutzer MelanieK erteilt.

USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO

B. Erteilen der SHOWPLAN-Berechtigung für eine Anwendungsrolle

Im folgenden Beispiel wird die SHOWPLAN-Berechtigung für die AdventureWorks2025-Datenbank der Anwendungsrolle AuditMonitor erteilt.

Gilt für: SQL Server 2008 (10.0.x) und höher sowie SQL-Datenbank

USE AdventureWorks2022;
GRANT SHOWPLAN TO AuditMonitor;
GO

C. Erteilen von CREATE VIEW mit GRANT OPTION

Im folgenden Beispiel wird die CREATE VIEW-Berechtigung für die AdventureWorks2025-Datenbank dem Benutzer CarmineEs mit dem Recht zum Erteilen der CREATE VIEW-Berechtigung für andere Prinzipale erteilt.

USE AdventureWorks2022;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO

D. Erteilen einer CONTROL-Berechtigung für einen Datenbankbenutzer

Im folgenden Beispiel wird die CONTROL-Berechtigung für die AdventureWorks2025-Datenbank dem Datenbankbenutzer Sarah erteilt. Der Benutzer muss in der Datenbank vorhanden und der Kontext muss auf die Datenbank festgelegt sein.

USE AdventureWorks2022;
GRANT CONTROL ON DATABASE::AdventureWorks2022 TO Sarah;
GO

Siehe auch