GRANT (Serverberechtigungen) (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Erteilt Berechtigungen für einen Server.

Transact-SQL-Syntaxkonventionen

Syntax

  
GRANT permission [ ,...n ]   
    TO <grantee_principal> [ ,...n ] [ WITH GRANT OPTION ]  
    [ AS <grantor_principal> ]  
  
<grantee_principal> ::= SQL_Server_login   
    | SQL_Server_login_mapped_to_Windows_login  
    | SQL_Server_login_mapped_to_Windows_group  
    | SQL_Server_login_mapped_to_certificate  
    | SQL_Server_login_mapped_to_asymmetric_key  
    | server_role  
  
<grantor_principal> ::= SQL_Server_login   
    | SQL_Server_login_mapped_to_Windows_login  
    | SQL_Server_login_mapped_to_Windows_group  
    | SQL_Server_login_mapped_to_certificate  
    | SQL_Server_login_mapped_to_asymmetric_key  
    | server_role  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

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

TO <Prinzipal> gibt den Prinzipal an, dem die Berechtigung zugewiesen wird.

AS <gewährender_Prinzipal> gibt den Prinzipal an, von dem der Prinzipal, der diese Abfrage ausführt, sein Recht zum Zuweisen der Berechtigung ableitet.

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

SQL_Server_login
Gibt einen SQL Server-Anmeldenamen an.

SQL_Server_login_mapped_to_Windows_login
Gibt einen SQL Server-Anmeldenamen an, der einem Windows-Anmeldenamen zugeordnet ist.

SQL_Server_login_mapped_to_Windows_group
Gibt einen SQL Server-Anmeldenamen an, der einer Windows-Gruppe zugeordnet ist.

SQL_Server_login_mapped_to_certificate
Gibt einen SQL Server-Anmeldenamen an, der einem Zertifikat zugeordnet ist.

SQL_Server_login_mapped_to_asymmetric_key
Gibt einen SQL Server-Anmeldenamen an, der einem asymmetrischen Schlüssel zugeordnet ist.

server_role
Gibt eine benutzerdefinierte Serverrolle an.

Bemerkungen

Berechtigungen im Serverbereich können nur erteilt werden, wenn master als aktuelle Datenbank verwendet wird.

Informationen zu Serverberechtigungen werden in der sys.server_permissions-Katalogsicht und Informationen zu Serverprinzipalen in der sys.server_principals-Katalogsicht angezeigt. Informationen zur Mitgliedschaft von Serverrollen werden in der sys.server_role_members-Katalogsicht angezeigt.

Ein Server stellt die höchste Ebene der Berechtigungshierarchie dar. Die spezifischsten und restriktivsten Berechtigungen, die für einen Server erteilt werden können, sind in der folgenden Tabelle aufgeführt.

Serverberechtigung Impliziert durch die Serverberechtigung
ADMINISTER BULK OPERATIONS CONTROL SERVER
ALTER ANY AVAILABILITY GROUP

Gilt für: SQL Server (SQL Server 2012 (11.x) bis aktuelle Version).
CONTROL SERVER
ALTER ANY CONNECTION CONTROL SERVER
ALTER ANY CREDENTIAL CONTROL SERVER
ALTER ANY DATABASE CONTROL SERVER
ALTER ANY ENDPOINT CONTROL SERVER
ALTER ANY EVENT NOTIFICATION CONTROL SERVER
ALTER ANY EVENT SESSION CONTROL SERVER
ALTER ANY LINKED SERVER CONTROL SERVER
ALTER ANY LOGIN CONTROL SERVER
ALTER ANY SERVER AUDIT CONTROL SERVER
ALTER ANY SERVER ROLE

Gilt für: SQL Server (SQL Server 2012 (11.x) bis aktuelle Version).
CONTROL SERVER
ALTER RESOURCES CONTROL SERVER
ALTER SERVER STATE CONTROL SERVER
ALTER SETTINGS CONTROL SERVER
ALTER TRACE CONTROL SERVER
AUTHENTICATE SERVER CONTROL SERVER
CONNECT ANY DATABASE

Gilt für: SQL Server (SQL Server 2014 (12.x) bis aktuelle Version).
CONTROL SERVER
CONNECT SQL CONTROL SERVER
CONTROL SERVER CONTROL SERVER
CREATE ANY DATABASE ALTER ANY DATABASE
CREATE AVAILABILITY GROUP

Gilt für: SQL Server (SQL Server 2012 (11.x) bis aktuelle Version).
ALTER ANY AVAILABILITY GROUP
CREATE DDL EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
CREATE ENDPOINT ALTER ANY ENDPOINT
CREATE LOGIN

Gilt für: SQL Server 2022 (16.x) und höhere Versionen.
ALTER ANY LOGIN
CREATE SERVER ROLE

Gilt für: SQL Server (SQL Server 2012 (11.x) bis aktuelle Version).
ALTER ANY SERVER ROLE
CREATE TRACE EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLY CONTROL SERVER
IMPERSONATE ANY LOGIN

Gilt für: SQL Server (SQL Server 2014 (12.x) bis aktuelle Version).
CONTROL SERVER
SELECT ALL USER SECURABLES

Gilt für: SQL Server (SQL Server 2014 (12.x) bis aktuelle Version).
CONTROL SERVER
SHUTDOWN CONTROL SERVER
UNSAFE ASSEMBLY CONTROL SERVER
VIEW ANY DATABASE VIEW ANY DEFINITION
VIEW ANY DEFINITION CONTROL SERVER
VIEW SERVER STATE ALTER SERVER STATE

Die folgenden drei Serverberechtigungen wurden in SQL Server 2014 (12.x) hinzugefügt.

CONNECT ANY DATABASE-Berechtigung
Erteilen Sie die CONNECT ANY DATABASE-Berechtigung einem Anmeldenamen, der eine Verbindung mit allen derzeit vorhandenen Datenbanken und allen zukünftig erstellten neuen Datenbanken herstellen muss. Gewährt keine Berechtigung für Datenbanken außer der Berechtigung zum Herstellen der Verbindung. Kombinieren Sie diese Berechtigung mit SELECT ALL USER SECURABLES oder VIEW SERVER STATE, um einem Überwachungsprozess das Anzeigen aller Daten oder aller Datenbankstatus in der Instanz von SQL Server zu ermöglichen.

IMPERSONATE ANY LOGIN-Berechtigung
Wenn die Berechtigung erteilt wird, kann ein Prozess der mittleren Ebene beim Herstellen der Verbindung mit Datenbanken die Identität des Kontos von Clients annehmen, die eine Verbindung mit ihm herstellen. Wenn die Berechtigung verweigert wird, kann verhindert werden, dass ein Anmeldename mit hohen Privilegien die Identität anderer Anmeldenamen annimmt. Beispielsweise kann verhindert werden, dass ein Anmeldename mit einer CONTROL SERVER-Berechtigung die Identität anderer Anmeldenamen annimmt.

SELECT ALL USER SECURABLES-Berechtigung
Wenn diese gewährt wird, kann eine Anmeldung Daten aus allen Objekten auf Schemaebene anzeigen, zum Beispiel Tabellen und Sichten. Tabellenwertfunktionen, die sich in benutzerbeschreibbaren Schemas befinden (alle Schemas außer sys und INFORMATION_SCHEMA) können zum Erstellen von Benutzerobjekten verwendet werden. Diese Berechtigung hat Auswirkungen auf alle Datenbanken, mit denen der Benutzer eine Verbindung herstellen kann. Wenn dies verweigert wird, wird der Zugriff auf alle Objekte verhindert, es sei denn, sie befinden sich im sys- oder INFORMATION_SCHEMA-Schema. Dies wirkt sich auch auf die Metadatensichtbarkeit der behandelten Objekte aus. Weitere Informationen hierzu finden Sie unter Konfigurieren der Sichtbarkeit von Metadaten.

Berechtigungen

Der Berechtigende (oder der mit der AS-Option angegebene Prinzipal) muss entweder über die Berechtigung selbst mit GRANT OPTION oder über eine höhere Berechtigung verfügen, in der die erteilte Berechtigung impliziert ist. Mitglieder der festen Serverrolle sysadmin können beliebige Berechtigungen erteilen.

Beispiele

A. Gewähren einer Berechtigung für einen Anmeldenamen

Im folgenden Beispiel wird der SQL Server-Anmeldung TerryEminhizer die CONTROL SERVER-Berechtigung zugewiesen.

USE master;  
GRANT CONTROL SERVER TO TerryEminhizer;  
GO  

B. Gewähren einer Berechtigung, die über die GRANT-Berechtigung verfügt

Im folgenden Beispiel wird der SQL Server-Anmeldung JanethEsteves die ALTER ANY EVENT NOTIFICATION-Berechtigung mit dem Recht zum Zuweisen der Berechtigung für andere Anmeldungen zugewiesen.

USE master;  
GRANT ALTER ANY EVENT NOTIFICATION TO JanethEsteves WITH GRANT OPTION;  
GO  

C. Gewähren einer Berechtigung für eine Serverrolle

Im folgenden Beispiel wird eine Serverrolle mit dem Namen ITDevelopers erstellt. Sie gewährt ALTER ANY DATABASE Berechtigung für die ITDevelopers-Serverrolle.

USE master;  
CREATE SERVER ROLE ITDevelopers ;  
GRANT ALTER ANY DATABASE TO ITDevelopers ;  
GO  

Weitere Informationen

GRANT (Transact-SQL)
DENY (Transact-SQL)
DENY (Serverberechtigungen) (Transact-SQL)
REVOKE (Serverberechtigungen) (Transact-SQL)
Berechtigungshierarchie (Datenbank-Engine)
Prinzipale (Datenbank-Engine)
Berechtigungen (Datenbank-Engine)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)