GRANT – octroi d'autorisations de serveur (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Permet d'accorder des autorisations sur un serveur.

Conventions de la syntaxe Transact-SQL

Syntaxe

  
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  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

permission
Spécifie une autorisation qui peut être accordée sur un serveur. Pour obtenir la liste des autorisations, consultez la section Notes plus loin dans cette rubrique.

TO <grantee_principal> Spécifie le principal auquel l’autorisation est accordée.

AS <grantor_principal> Spécifie le principal à partir duquel le principal qui exécute cette requête dérive son droit d’accorder l’autorisation.

WITH GRANT OPTION
Indique que le principal a également la possibilité d'accorder l'autorisation spécifiée à d'autres principaux.

SQL_Server_login
Spécifie une connexion SQL Server.

SQL_Server_login_mapped_to_Windows_login
Spécifie une connexion SQL Server mappée sur une connexion Windows.

SQL_Server_login_mapped_to_Windows_group
Spécifie une connexion SQL Server mappée sur un groupe Windows.

SQL_Server_login_mapped_to_certificate
Spécifie un compte de connexion SQL Server mappé à un certificat.

SQL_Server_login_mapped_to_asymmetric_key
Spécifie un compte de connexion SQL Server mappé à une clé asymétrique.

server_role
Spécifie un rôle de serveur défini par l'utilisateur.

Notes

Les autorisations dans l'étendue du serveur peuvent être accordées seulement lorsque la base de données en cours est master.

Les informations sur les autorisations de serveur peuvent être consultées dans la vue de catalogue sys.server_permissions, tandis que les informations sur les principaux de serveur peuvent être consultées dans la vue de catalogue sys.server_principals. Des informations sur l’appartenance des rôles de serveur peuvent être consultées dans la vue de catalogue sys.server_role_members.

Un serveur représente le plus haut niveau de la hiérarchie des autorisations. Les autorisations les plus spécifiques et limitées qu'il est possible d'accorder sur un serveur sont répertoriées dans le tableau ci-dessous.

Autorisation de serveur Déduite d'une autorisation de serveur
ADMINISTER BULK OPERATIONS CONTROL SERVER
ALTER ANY AVAILABILITY GROUP

S'applique à: SQL Server (SQL Server 2012 (11.x) via la version actuelle).
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

S'applique à: SQL Server (SQL Server 2012 (11.x) via la version actuelle).
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

S'applique à: SQL Server (SQL Server 2014 (12.x) via la version actuelle).
CONTROL SERVER
CONNECT SQL CONTROL SERVER
CONTROL SERVER CONTROL SERVER
CREATE ANY DATABASE ALTER ANY DATABASE
Créer un groupe de disponibilité

S'applique à: SQL Server (SQL Server 2012 (11.x) via la version actuelle).
ALTER ANY AVAILABILITY GROUP
CREATE DDL EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
CREATE ENDPOINT ALTER ANY ENDPOINT
CREATE LOGIN

S’applique à : SQL Server 2022 (16.x) et versions ultérieures.
ALTER ANY LOGIN
CREATE SERVER ROLE

S'applique à: SQL Server (SQL Server 2012 (11.x) via la version actuelle).
ALTER ANY SERVER ROLE
CREATE TRACE EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLY CONTROL SERVER
IMPERSONATE ANY LOGIN

S'applique à: SQL Server (SQL Server 2014 (12.x) via la version actuelle).
CONTROL SERVER
SELECT ALL USER SECURABLES

S'applique à: SQL Server (SQL Server 2014 (12.x) via la version actuelle).
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

Les trois autorisations de serveur suivantes ont été ajoutées dans SQL Server 2014 (12.x).

Autorisation CONNECT ANY DATABASE
Accordez l'autorisation CONNECT ANY DATABASE à une connexion qui doit se connecter à toutes les bases de données existantes et à celles qui pourront être créées. N'accorde pas d'autorisation dans une base de données au-delà de la connexion. Associez cette autorisation à SELECT ALL USER SECURABLES ou VIEW SERVER STATE pour autoriser un processus d’audit à consulter toutes les données ou toutes les bases de données sur l’instance de SQL Server.

Autorisation IMPERSONATE ANY LOGIN
Lorsque cette autorisation est accordée, elle permet à un processus de niveau intermédiaire d'emprunter l'identité du compte des clients qui se connectent, à mesure qu'il se connecte aux bases de données. Si cette autorisation est refusée, une connexion dotée de privilèges élevés peut être bloquée à partir de l'emprunt d'identité d'autres connexions. Par exemple, une connexion dotée de l'autorisation CONTROL SERVER peut être bloquée à partir de l'emprunt d'identité d'autres connexions.

Autorisation SELECT ALL USER SECURABLES
Si elle est accordée, une connexion peut afficher les données de tous les objets de niveau schéma, notamment les tables, vues et fonctions table qui résident dans des schémas accessibles en écriture par l’utilisateur. Tout schéma, sauf sys et INFORMATION_SCHEMA, peut être utilisé pour créer des objets utilisateur. Cette autorisation s’applique à toutes les bases de données auxquelles l’utilisateur peut se connecter. Si elle est refusée, tout accès aux objets est interdit, sauf s’ils se trouvent dans le schéma sys ou INFORMATION_SCHEMA. Cela a également un effet sur la visibilité des métadonnées des objets couverts. Consultez Configuration de la visibilité des métadonnées.

Autorisations

Le fournisseur d'autorisations (ou le principal spécifié avec l'option AS) doit posséder l'autorisation elle-même avec l'option GRANT OPTION ou une autorisation plus élevée qui implique l'autorisation accordée. Les membres du rôle serveur fixe sysadmin peuvent accorder toutes les autorisations.

Exemples

R. Octroi d'une autorisation à une connexion

Dans l'exemple ci-dessous, l'autorisation CONTROL SERVER est accordée à la connexion SQL Server TerryEminhizer.

USE master;  
GRANT CONTROL SERVER TO TerryEminhizer;  
GO  

B. Octroi d'une autorisation qui possède l'autorisation GRANT

Dans l'exemple suivant, l'autorisation ALTER ANY EVENT NOTIFICATION est accordée à la connexion SQL Server JanethEsteves avec le droit d'accorder cette autorisation à une autre connexion.

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

C. Octroi d'une autorisation à un rôle de serveur

L’exemple suivant crée un rôle serveur appelé ITDevelopers. Il accorde l’autorisation ALTER ANY DATABASE au rôle serveur ITDevelopers.

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

Voir aussi

GRANT (Transact-SQL)
DENY (Transact-SQL)
DENY – refus d'autorisations de serveur (Transact-SQL)
REVOKE - Révoquer des autorisations sur un serveur (Transact-SQL)
Hiérarchie des autorisations (moteur de base de données)
Principaux (moteur de base de données)
Autorisations (moteur de base de données)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)