GRANT – octroi d'autorisations d'objet système (Transact-SQL)

Permet d'accorder des autorisations sur des objets système tels que des procédures stockées, des procédures stockées étendues, des fonctions et des vues.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

GRANT { SELECT | EXECUTE } ON [ sys.]system_object TO principal 

Arguments

  • [ sys.] .
    L'identificateur sys est requis uniquement lorsque vous faites référence à des affichages catalogue ou à des vues de gestion dynamique.

  • system_object
    Spécifie l'objet sur lequel l'autorisation doit être accordée.

  • principal
    Spécifie le principal auquel l'autorisation doit être accordée.

Notes

Cette instruction permet d'accorder des autorisations sur des procédures stockées, procédures stockées étendues, fonctions table, fonctions scalaires, vues, affichages catalogue, vues de compatibilité, vues INFORMATION_SCHEMA, vues de gestion dynamique et tables système installées par SQL Server. Chacun de ces objets système existe sous la forme d'un enregistrement unique dans la base de données des ressources du serveur (mssqlsystemresource). La base de données des ressources est en lecture seule. Un lien à l'objet est exposé comme un enregistrement dans le schéma sys de chaque base de données. L'autorisation d'exécuter ou de sélectionner un objet système peut être accordée, refusée ou révoquée.

L'octroi de l'autorisation d'exécuter ou de sélectionner un objet n'implique pas nécessairement toutes les autorisations requises pour utiliser l'objet. La plupart des objets effectuent des opérations qui nécessitent des autorisations supplémentaires. Par exemple, un utilisateur auquel est accordée l'autorisation EXECUTE sur sp_addlinkedserver ne peut pas créer un serveur lié, à moins que l'utilisateur soit également membre du rôle de serveur fixe sysadmin.

La résolution de nom par défaut permet de résoudre les noms de procédure non qualifiés dans la base de données des ressources. Par conséquent, l'identificateur sys est requis uniquement lorsque vous spécifiez des affichages catalogue ou des vues de gestion dynamique.

L'octroi d'autorisations sur des déclencheurs et sur des colonnes d'objets système n'est pas pris en charge.

Les autorisations sur les objets système sont conservées lors d'une mise à niveau de SQL Server.

Les objets système sont consultables dans l'affichage catalogue sys.system_objects. Les autorisations sur les objets système sont consultables dans l'affichage catalogue sys.database_permissions, dans la base de données master.

La requête ci-dessous retourne des informations sur les autorisations des objets système :

SELECT * FROM master.sys.database_permissions AS dp 
    JOIN sys.system_objects AS so
    ON dp.major_id = so.object_id
    WHERE dp.class = 1 AND so.parent_object_id = 0 ;
GO

Autorisations

Requiert l'autorisation CONTROL SERVER.

Exemples

A. Octroi d'une autorisation SELECT sur une vue

L'exemple de code ci-dessous accorde à la connexion SQL ServerSylvester1 l'autorisation de sélectionner une vue qui répertorie les connexions SQL Server. Le code accorde ensuite l'autorisation supplémentaire requise pour afficher les métadonnées sur les connexions SQL Server qui n'appartiennent pas à l'utilisateur.

USE AdventureWorks2008R2;
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO

B. Octroi d'une autorisation EXECUTE sur une procédure stockée étendue

Dans l'exemple suivant, l'autorisation EXECUTE sur xp_readmail est accordée à Sylvester1.

GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO