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 Gewähren von ALLEN entspricht der Gewährung der folgenden Berechtigungen: BACKUPDATABASE, BACKUP LOG, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLEund CREATE VIEW.

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

MIT GRANT OPTION Gibt an, dass der Hauptmann auch die Möglichkeit erhält, die angegebene Erlaubnis anderen Hauptverantwortlichen zu erteilen.

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 DATABASE MASSENVORGÄNGEN
Gilt für: SQL-Datenbank
CONTROL Steuerungsserver
ALTER CONTROL JEDES ÄNDERN DATABASE
JEDES ÄNDERN APPLICATION ROLE ALTER Steuerungsserver
JEDES ÄNDERN ASSEMBLY ALTER Steuerungsserver
JEDES ÄNDERN ASYMMETRIC KEY ALTER Steuerungsserver
JEDES ÄNDERN CERTIFICATE ALTER Steuerungsserver
JEDES ÄNDERN COLUMN ENCRYPTION KEY ALTER Steuerungsserver
ÄNDERN SIE JEDE COLUMN MASTER KEY DEFINITION ALTER Steuerungsserver
JEDES ÄNDERN CONTRACT ALTER Steuerungsserver
ÄNDERN EINER BELIEBIGEN DATABASE ÜBERWACHUNG ALTER JEDES ÄNDERN SERVER AUDIT
ÄNDERN SIE JEDEN DATABASE DDL TRIGGER ALTER Steuerungsserver
ÄNDERN BELIEBIGEN DATABASEEVENT NOTIFICATION ALTER JEDES ÄNDERN EVENT NOTIFICATION
ÄNDERN BELIEBIGEN DATABASEEVENT SESSION
Gilt für: SQL-Datenbank.
ALTER JEDES ÄNDERN EVENT SESSION
JEDES ÄNDERN DATABASE SCOPED CONFIGURATION
Gilt für: SQL Server 2016 (13.x) und höher, SQL-Datenbank.
CONTROL Steuerungsserver
ÄNDERN EINES BELIEBIGEN DATENBEREICHS ALTER Steuerungsserver
JEDES ÄNDERN EXTERNAL DATA SOURCE ALTER Steuerungsserver
JEDES ÄNDERN EXTERNAL FILE FORMAT ALTER Steuerungsserver
JEDES ÄNDERN EXTERNAL LIBRARY
Gilt für: SQL Server 2017 (14.x).
CONTROL Steuerungsserver
JEDES ÄNDERN FULLTEXT CATALOG ALTER Steuerungsserver
BELIEBIGE MASKE ÄNDERN CONTROL Steuerungsserver
JEDES ÄNDERN MESSAGE TYPE ALTER Steuerungsserver
JEDES ÄNDERN REMOTE SERVICE BINDING ALTER Steuerungsserver
JEDES ÄNDERN ROLE ALTER Steuerungsserver
JEDES ÄNDERN ROUTE ALTER Steuerungsserver
JEDES ÄNDERN SCHEMA ALTER Steuerungsserver
JEDES ÄNDERN SECURITY POLICY
Gilt für: Azure SQL-Datenbank.
CONTROL Steuerungsserver
JEDES ÄNDERN SENSITIVITY CLASSIFICATION
Gilt für: SQL Server (SQL Server 2019 und höher), Azure SQL-Datenbank.
CONTROL Steuerungsserver
JEDES ÄNDERN SERVICE ALTER Steuerungsserver
JEDES ÄNDERN SYMMETRIC KEY ALTER Steuerungsserver
JEDES ÄNDERN USER ALTER Steuerungsserver
AUTHENTICATE CONTROL AUTHENTIFIZIEREN DES SERVERS
BACKUP DATABASE CONTROL Steuerungsserver
BACKUP PROTOKOLL CONTROL Steuerungsserver
CHECKPOINT CONTROL Steuerungsserver
CONNECT VERBINDUNGSREPLIKATION Steuerungsserver
VERBINDUNGSREPLIKATION CONTROL Steuerungsserver
CONTROL CONTROL Steuerungsserver
CREATE AGGREGATE ALTER Steuerungsserver
BELIEBIG ERSTELLEN EXTERNAL LIBRARY
Gilt für: SQL Server 2017 (14.x).
CONTROL Steuerungsserver
CREATE ASSEMBLY JEDES ÄNDERN ASSEMBLY Steuerungsserver
CREATE ASYMMETRIC KEY JEDES ÄNDERN ASYMMETRIC KEY Steuerungsserver
CREATE CERTIFICATE JEDES ÄNDERN CERTIFICATE Steuerungsserver
CREATE CONTRACT JEDES ÄNDERN CONTRACT Steuerungsserver
CREATE DATABASE CONTROL BELIEBIG ERSTELLEN DATABASE
CREATE DATABASE DDL EVENT NOTIFICATION ÄNDERN BELIEBIGEN DATABASEEVENT NOTIFICATION CREATE DDL EVENT NOTIFICATION
CREATE DEFAULT ALTER Steuerungsserver
CREATE FULLTEXT CATALOG JEDES ÄNDERN FULLTEXT CATALOG Steuerungsserver
CREATE FUNCTION ALTER Steuerungsserver
CREATE MESSAGE TYPE JEDES ÄNDERN MESSAGE TYPE Steuerungsserver
CREATE PROCEDURE ALTER Steuerungsserver
CREATE QUEUE ALTER Steuerungsserver
CREATE REMOTE SERVICE BINDING JEDES ÄNDERN REMOTE SERVICE BINDING Steuerungsserver
CREATE ROLE JEDES ÄNDERN ROLE Steuerungsserver
CREATE ROUTE JEDES ÄNDERN ROUTE Steuerungsserver
CREATE RULE ALTER Steuerungsserver
CREATE SCHEMA JEDES ÄNDERN SCHEMA Steuerungsserver
CREATE SERVICE JEDES ÄNDERN SERVICE Steuerungsserver
CREATE SYMMETRIC KEY JEDES ÄNDERN SYMMETRIC KEY Steuerungsserver
CREATE SYNONYM ALTER Steuerungsserver
CREATE TABLE ALTER Steuerungsserver
CREATE TYPE ALTER Steuerungsserver
CREATE VIEW ALTER Steuerungsserver
CREATE XML SCHEMA COLLECTION ALTER Steuerungsserver
DELETE CONTROL Steuerungsserver
EXECUTE CONTROL Steuerungsserver
AUSFÜHREN BELIEBIGER EXTERNER ELEMENTE ENDPOINT
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
KILL-VERBINDUNG DATABASE
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
VIEWJEDE DEFINITION COLUMN ENCRYPTION KEY CONTROL VIEW JEDE DEFINITION
VIEWJEDE DEFINITION COLUMN MASTER KEY CONTROL VIEW JEDE DEFINITION
VIEW DATABASE STAAT CONTROL VIEW SERVERSTATUS
VIEW DEFINITION CONTROL VIEW JEDE DEFINITION

Permissions

Der Erteiler (oder der mit der AS-Option angegebene Prinzipal) muss entweder die Erlaubnis selbst mit GRANT OPTION haben oder eine höhere Genehmigung, die die erteilte Erlaubnis 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. Gewährung 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