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

Cette rubrique s’applique à : OuiSQL Server (à partir de 2008)Ouibase de données SQL AzureOuiAzure SQL Data Warehouse Oui Parallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Accorde des autorisations à un principal sur un élément sécurisable.Grants permissions on a securable to a principal. Le concept général est d’ACCORDER <une autorisation> SUR <un objet> À <un utilisateur, une connexion ou un groupe>.The general concept is to GRANT <some permission> ON <some object> TO <some user, login, or group>. Pour obtenir une présentation générale des autorisations, consultez Autorisations (moteur de base de données).For a general discussion of permissions, see Permissions (Database Engine).

Icône Lien de l’article Conventions de la syntaxe Transact-SQLArticle link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

-- 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  
}  

ArgumentsArguments

ALLALL
Cette option est déconseillée mais maintenue uniquement pour la compatibilité descendante.This option is deprecated and maintained only for backward compatibility. Elle n'accorde pas toutes les autorisations possibles.It does not grant all possible permissions. Elle revient à accorder les autorisations suivantes :Granting ALL is equivalent to granting the following permissions:

  • Si l'élément sécurisable est une base de données, ALL représente BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE et CREATE VIEW.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.

  • Si l'élément sécurisable est une fonction scalaire, ALL représente EXECUTE et REFERENCES.If the securable is a scalar function, ALL means EXECUTE and REFERENCES.

  • Si l'élément sécurisable est une fonction table, ALL représente DELETE, INSERT, REFERENCES, SELECT et UPDATE.If the securable is a table-valued function, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • Si l'élément sécurisable est une procédure stockée, ALL représente EXECUTE.If the securable is a stored procedure, ALL means EXECUTE.

  • Si l'élément sécurisable est une table, ALL représente DELETE, INSERT, REFERENCES, SELECT et UPDATE.If the securable is a table, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • Si l'élément sécurisable est une vue, ALL représente DELETE, INSERT, REFERENCES, SELECT et UPDATE.If the securable is a view, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

PRIVILEGESPRIVILEGES
Inclus pour la conformité aux normes ISO.Included for ISO compliance. Ne change pas le comportement de l'option ALL.Does not change the behavior of ALL.

permissionpermission
Nom d'une autorisation.Is the name of a permission. Les mappages valides des autorisations aux éléments sécurisables sont décrits dans les sous-rubriques qui suivent.The valid mappings of permissions to securables are described in the subtopics listed below.

columncolumn
Spécifie le nom de la colonne d'une table à laquelle les autorisations s'appliquent.Specifies the name of a column in a table on which permissions are being granted. Les parenthèses () sont requises.The parentheses () are required.

classclass
Indique la classe de l'élément sécurisable sur laquelle l'autorisation est accordée.Specifies the class of the securable on which the permission is being granted. Le qualificateur d’étendue :: est obligatoire.The scope qualifier :: is required.

securablesecurable
Indique l'élément sécurisable sur lequel l'autorisation est accordée.Specifies the securable on which the permission is being granted.

TO principalTO principal
Nom d’un principal.Is the name of a principal. Les principaux auxquels il est possible d'accorder des autorisations sur un élément sécurisable varient en fonction de l'élément sécurisable.The principals to which permissions on a securable can be granted vary, depending on the securable. Consultez les sous-rubriques ci-dessous pour connaître les combinaisons acceptées.See the subtopics listed below for valid combinations.

GRANT OPTIONGRANT OPTION
Indique que le détenteur de l'autorisation a également la possibilité d'accorder l'autorisation spécifiée à d'autres principaux.Indicates that the grantee will also be given the ability to grant the specified permission to other principals.

AS principalAS principal
Utilisez la clause AS principal pour indiquer que le principal enregistré comme entité accordant l’autorisation doit être un principal autre que la personne qui exécute l’instruction.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. Supposez par exemple que l’utilisateur Mary est le principal_id 12 et que l’utilisateur Raul est le principal 15.For example, presume that user Mary is principal_id 12 and user Raul is principal 15. Mary exécute GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;. Maintenant, la table sys.database_permissions indique que le grantor_prinicpal_id était 15 (Raul), même si l’instruction a été exécutée par l’utilisateur 13 (Mary).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).

L’utilisation de la clause AS n’est généralement pas recommandé, sauf si vous devez définir explicitement la chaîne d’autorisation.Using the AS clause is typically not recommended unless you need to explicitly define the permission chain. Pour plus d’informations, consultez la section Synthèse sur l’algorithme de vérification des autorisations de la rubrique Autorisations (moteur de base de données).For more information, see the Summary of the Permission Check Algorithm section of Permissions (Database Engine).

L’utilisation de AS dans cette instruction n’implique pas la possibilité d’emprunter l’identité d’un autre utilisateur.The use of AS in this statement does not imply the ability to impersonate another user.

Notes Remarks

La syntaxe complète de l'instruction GRANT est complexe.The full syntax of the GRANT statement is complex. Le diagramme de syntaxe ci-dessus a été simplifié pour attirer l'attention sur sa structure.The syntax diagram above was simplified to draw attention to its structure. La syntaxe complète d’accord des autorisations sur des éléments sécurisables particuliers est décrite dans les articles ci-dessous.Complete syntax for granting permissions on specific securables is described in the articles listed below.

L'instruction REVOKE peut s'utiliser pour supprimer des autorisations accordées et l'instruction DENY pour empêcher un principal d'obtenir une autorisation particulière au moyen d'une instruction GRANT.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.

L'accord d'une autorisation supprime l'option DENY ou REVOKE de cette autorisation sur l'élément sécurisable spécifié.Granting a permission removes DENY or REVOKE of that permission on the specified securable. Si la même autorisation est refusée dans une étendue plus élevée qui contient l'élément sécurisable, l'option DENY est prioritaire.If the same permission is denied at a higher scope that contains the securable, the DENY takes precedence. Cependant, la révocation de l'autorisation accordée dans une étendue plus élevée n'est pas prioritaire.But revoking the granted permission at a higher scope does not take precedence.

Les autorisations au niveau base de données sont accordées sur l'étendue de la base de données spécifiée.Database-level permissions are granted within the scope of the specified database. Si un utilisateur a besoin d'autorisations sur des objets dans une autre base de données, créez le compte de l'utilisateur dans cette autre base de données ou autorisez le compte de l'utilisateur à accéder à la fois à cette autre base de données et à la base de données active.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.

Attention

Une instruction DENY de niveau table n'a pas la priorité sur une instruction GRANT de niveau colonne.A table-level DENY does not take precedence over a column-level GRANT. Cette incohérence dans la hiérarchie des autorisations a été conservée pour des raisons de compatibilité descendante.This inconsistency in the permissions hierarchy has been preserved for the sake of backward compatibility. Elle sera supprimée dans une version ultérieure.It will be removed in a future release.

La procédure système stockée sp_helprotect répertorie les autorisations sur un élément sécurisable au niveau base de données.The sp_helprotect system stored procedure reports permissions on a database-level securable.

WITH GRANT OPTIONWITH GRANT OPTION

GRANT ...The GRANT WITH GRANT OPTION spécifie que le principal de sécurité qui reçoit l’autorisation peut accorder l’autorisation spécifiée à d’autres comptes de sécurité.WITH GRANT OPTION specifies that the security principal receiving the permission is given the ability to grant the specified permission to other security accounts. Quand le principal qui reçoit l’autorisation est un rôle ou un groupe Windows, la clause AS doit être utilisée si l’autorisation d’objet doit être accordée à des utilisateurs qui ne sont pas membres du groupe ou du rôle.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. Étant donné que seul un utilisateur, et non un groupe ou un rôle, peut exécuter une instruction GRANT, un membre spécifique du groupe ou du rôle doit utiliser la clause AS pour appeler explicitement l’appartenance au rôle ou au groupe quand il accorde l’autorisation.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. L’exemple suivant montre comment la clause WITH GRANT OPTION est utilisée quand elle est accordée à un rôle ou à un groupe Windows.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;  

Graphique des autorisations SQL ServerChart of SQL Server Permissions

Pour obtenir un graphique de la taille d’une affiche de toutes les autorisations du Moteur de base de donnéesDatabase Engine au format PDF, consultez https://aka.ms/sql-permissions-poster.For a poster sized chart of all Moteur de base de donnéesDatabase Engine permissions in pdf format, see https://aka.ms/sql-permissions-poster.

AutorisationsPermissions

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.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. En cas d'utilisation de l'option AS, d'autres critères s'appliquent.If using the AS option, additional requirements apply. Pour plus d’informations, consultez l’article sur les éléments sécurisables.See the securable-specific article for details.

Les propriétaires d'objets peuvent accorder des autorisations sur les objets qu'ils possèdent.Object owners can grant permissions on the objects they own. Les principaux ayant l'autorisation CONTROL sur un élément sécurisable peuvent accorder une autorisation sur cet élément.Principals with CONTROL permission on a securable can grant permission on that securable.

Les détenteurs de l'autorisation CONTROL SERVER, tels que les membres du rôle serveur fixe sysadmin, peuvent accorder une autorisation sur n'importe quel élément sécurisable du serveur.Grantees of CONTROL SERVER permission, such as members of the sysadmin fixed server role, can grant any permission on any securable in the server. Les bénéficiaires de l'autorisation CONTROL sur une base de données, tels que les membres du rôle de base de données fixe db_owner, peuvent accorder une autorisation quelconque sur tout élément sécurisable inclus dans la base de données.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. Les détenteurs de l'autorisation CONTROL sur un schéma peuvent accorder une autorisation sur n'importe quel objet dans ce schéma.Grantees of CONTROL permission on a schema can grant any permission on any object within the schema.

ExemplesExamples

Le tableau suivant répertorie les éléments sécurisables et les articles qui décrivent leur syntaxe.The following table lists the securables and the articles that describe the securable-specific syntax.

Rôle d'applicationApplication Role GRANT - Octroyer des autorisations à un principal de base de données (Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
AssemblyAssembly GRANT - Accorder des autorisations sur un assembly (Transact-SQL)GRANT Assembly Permissions (Transact-SQL)
Clé asymétriqueAsymmetric Key GRANT - Octroyer des autorisations sur une clé asymétrique (Transact-SQL)GRANT Asymmetric Key Permissions (Transact-SQL)
Groupe de disponibilitéAvailability Group GRANT - Octroyer des autorisations sur un groupe de disponibilité (Transact-SQL)GRANT Availability Group Permissions (Transact-SQL)
CertificatCertificate GRANT - Octroyer des autorisations sur un certificat (Transact-SQL)GRANT Certificate Permissions (Transact-SQL)
ContratContract GRANT - Octroyer des autorisations dans Service Broker (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
Base de donnéesDatabase GRANT - Octroyer des autorisations sur une base de données (Transact-SQL)GRANT Database Permissions (Transact-SQL)
Informations d’identification délimitées à la base de donnéesDatabase Scoped Credential GRANT - Octroyer des autorisations sur les informations d’identification délimitées à la base de données (Transact-SQL)GRANT Database Scoped Credential (Transact-SQL)
Point de terminaisonEndpoint GRANT - Octroyer des autorisations sur un point de terminaison (Transact-SQL)GRANT Endpoint Permissions (Transact-SQL)
Catalogue de texte intégralFull-Text Catalog GRANT - Octroyer des autorisations sur un catalogue de texte intégral (Transact-SQL)GRANT Full-Text Permissions (Transact-SQL)
Liste de mots vides de texte intégralFull-Text Stoplist GRANT - Octroyer des autorisations sur un catalogue de texte intégral (Transact-SQL)GRANT Full-Text Permissions (Transact-SQL)
FonctionFunction GRANT – Octroyer des autorisations sur un objet (Transact-SQL)GRANT Object Permissions (Transact-SQL)
ConnexionLogin GRANT – Octroyer des autorisations à un principal de serveur (Transact-SQL)GRANT Server Principal Permissions (Transact-SQL)
Type de messageMessage Type GRANT - Octroyer des autorisations dans Service Broker (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
ObjectObject GRANT – Octroyer des autorisations sur un objet (Transact-SQL)GRANT Object Permissions (Transact-SQL)
File d'attenteQueue GRANT – Octroyer des autorisations sur un objet (Transact-SQL)GRANT Object Permissions (Transact-SQL)
Liaisons de service distantRemote Service Binding GRANT - Octroyer des autorisations dans Service Broker (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
RoleRole GRANT - Octroyer des autorisations à un principal de base de données (Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
ItinéraireRoute GRANT - Octroyer des autorisations dans Service Broker (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
schémaSchema GRANT - Octroyer des autorisations sur un schéma (Transact-SQL)GRANT Schema Permissions (Transact-SQL)
Liste de propriétés de rechercheSearch Property List GRANT - Accorder des autorisations sur une liste de propriétés de recherche (Transact-SQL)GRANT Search Property List Permissions (Transact-SQL)
ServeurServer Autorisations de serveur GRANT (Transact-SQL)GRANT Server Permissions (Transact-SQL)
ServiceService GRANT - Octroyer des autorisations dans Service Broker (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
Procédure stockéeStored Procedure GRANT – Octroyer des autorisations sur un objet (Transact-SQL)GRANT Object Permissions (Transact-SQL)
Clé symétriqueSymmetric Key GRANT - Octroyer des autorisations sur une clé symétrique (Transact-SQL)GRANT Symmetric Key Permissions (Transact-SQL)
SynonymeSynonym GRANT – Octroyer des autorisations sur un objet (Transact-SQL)GRANT Object Permissions (Transact-SQL)
Objets systèmeSystem Objects GRANT – octroi d’autorisations d’objet système (Transact-SQL)GRANT System Object Permissions (Transact-SQL)
Table de charge de travailTable GRANT – Octroyer des autorisations sur un objet (Transact-SQL)GRANT Object Permissions (Transact-SQL)
TypeType GRANT – Octroyer des autorisations sur un type (Transact-SQL)GRANT Type Permissions (Transact-SQL)
UtilisateurUser GRANT - Octroyer des autorisations à un principal de base de données (Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
AffichageView GRANT – Octroyer des autorisations sur un objet (Transact-SQL)GRANT Object Permissions (Transact-SQL)
Collection de schémas XMLXML Schema Collection GRANT – Octroyer des autorisations sur une collection de schémas XML (Transact-SQL)GRANT XML Schema Collection Permissions (Transact-SQL)

Voir aussiSee 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)