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

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabaseouiAzure SQL Data Warehouse ouiParallel 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 consiste à accorder <des autorisations > ON <un objet > à <certains utilisateurs, la connexion ou le 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 d’autorisations, consultez autorisations ( moteur de base de données ).For a general discussion of permissions, see Permissions (Database Engine).

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic 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.

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

colonnecolumn
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.

classeclass
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 requis.The scope qualifier :: is required.

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

POUR principalTO principal
Est le 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. Voir les sous-rubriques ci-dessous pour connaître les combinaisons acceptées.See the sub-topics 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 principale pour indiquer que le principal enregistrées en tant que la personne qui accorde l’autorisation doit être un principal de 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. Par exemple, supposons qu’utilisateur Marie est principal_id 12 et utilisateur Raul est 15 principal.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 a 15 (Raul), même si l’instruction a été réellement 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’aide 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 résumé de l’algorithme de vérification d’autorisation section de 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, comme 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.

NotesRemarks

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 rubriques ci-dessous.Complete syntax for granting permissions on specific securables is described in the topics 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

Le GRANT ...The GRANT AVEC l’OPTION GRANT précise que le principal de sécurité reçoit l’autorisation est la possibilité d’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. Lorsque l’entité qui reçoit l’autorisation est un rôle ou un groupe Windows, le AS clause doit être utilisée lors de l’autorisation de l’objet doit être accordée aux 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, au lieu d’un groupe ou du rôle peut exécuter un GRANT instruction, un membre spécifique du groupe ou du rôle doit utiliser le AS clause pour appeler explicitement l’appartenance de groupe ou de rôle lorsque vous accordez 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 WITH GRANT OPTION est utilisé quand accordé à 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 http://go.microsoft.com/fwlink/?LinkId=229142.For a poster sized chart of all Moteur de base de donnéesDatabase Engine permissions in pdf format, see http://go.microsoft.com/fwlink/?LinkId=229142.

PermissionsPermissions

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 la rubrique sur les éléments sécurisables.See the securable-specific topic 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 rubriques qui décrivent la syntaxe spécifique à l’élément sécurisable.The following table lists the securables and the topics that describe the securable-specific syntax.

Rôle d'applicationApplication Role ACCORDER des autorisations de Principal de base de données ( Transact-SQL )GRANT Database Principal Permissions (Transact-SQL)
AssemblyAssembly ACCORDER des autorisations sur un Assembly ( Transact-SQL )GRANT Assembly Permissions (Transact-SQL)
Clé asymétriqueAsymmetric Key ACCORDER des autorisations de clé asymétrique ( Transact-SQL )GRANT Asymmetric Key Permissions (Transact-SQL)
Groupe de disponibilitéAvailability Group Autorisations de groupe de disponibilité GRANT ( Transact-SQL )GRANT Availability Group Permissions (Transact-SQL)
CertificatCertificate Autorisations de certificat GRANT ( Transact-SQL )GRANT Certificate Permissions (Transact-SQL)
ContratContract Autorisations GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
Base de donnéesDatabase Les autorisations de base de données GRANT ( Transact-SQL )GRANT Database Permissions (Transact-SQL)
Étendue de la base de données d’informations d’identificationDatabase Scoped Credential Base de données de l’octroi d’une étendue d’informations d’identification (Transact-SQL)GRANT Database Scoped Credential (Transact-SQL)
Point de terminaisonEndpoint ACCORDER des autorisations de point de terminaison ( Transact-SQL )GRANT Endpoint Permissions (Transact-SQL)
Catalogue de texte intégralFull-Text Catalog Les autorisations GRANT recherche en texte intégral ( Transact-SQL )GRANT Full-Text Permissions (Transact-SQL)
Liste de mots vides de texte intégralFull-Text Stoplist Les autorisations GRANT recherche en texte intégral ( Transact-SQL )GRANT Full-Text Permissions (Transact-SQL)
FonctionFunction ACCORDER des autorisations d’objet ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
ConnexionLogin ACCORDER des autorisations de Principal de serveur ( Transact-SQL )GRANT Server Principal Permissions (Transact-SQL)
Type de messageMessage Type Autorisations GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
ObjetObject ACCORDER des autorisations d’objet ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
File d'attenteQueue ACCORDER des autorisations d’objet ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
Liaisons de service distantRemote Service Binding Autorisations GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
RôleRole ACCORDER des autorisations de Principal de base de données ( Transact-SQL )GRANT Database Principal Permissions (Transact-SQL)
ItinéraireRoute Autorisations GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
schémaSchema ACCORDER des autorisations sur les schémas ( Transact-SQL )GRANT Schema Permissions (Transact-SQL)
Liste de propriétés de rechercheSearch Property List Autorisations de liste de propriétés de recherche GRANT ( Transact-SQL )GRANT Search Property List Permissions (Transact-SQL)
ServerServer Autorisations de serveur GRANT (Transact-SQL)GRANT Server Permissions (Transact-SQL)
ServiceService Autorisations GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
Procédure stockéeStored Procedure ACCORDER des autorisations d’objet ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
Clé symétriqueSymmetric Key ACCORDER des autorisations de clé symétrique ( Transact-SQL )GRANT Symmetric Key Permissions (Transact-SQL)
SynonymeSynonym ACCORDER des autorisations d’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)
TableTable ACCORDER des autorisations d’objet ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
TypeType Type d’octroi des autorisations ( Transact-SQL )GRANT Type Permissions (Transact-SQL)
UtilisateurUser ACCORDER des autorisations de Principal de base de données ( Transact-SQL )GRANT Database Principal Permissions (Transact-SQL)
AffichageView ACCORDER des autorisations d’objet ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
Collection de schémas XMLXML Schema Collection ACCORDER des autorisations de 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)