GRANT des autorisations d’objet système (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

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

Conventions de la syntaxe Transact-SQL

Syntaxe

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

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

[ sys. ]

Le qualificateur sys est obligatoire uniquement lorsque vous faites référence aux vues de catalogue et aux vues de gestion dynamique.

system_object

Spécifie l’objet sur lequel l’autorisation est accordée.

principal

Spécifie le principal auquel l'autorisation est accordée.

Notes

Cette instruction peut être utilisée pour accorder des autorisations sur certaines procédures stockées, procédures stockées étendues, fonctions table, fonctions scalaires, vues de catalogue, vues de compatibilité, vues de compatibilité, 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 d’une autorisation d’exécution ou de sélection d’un objet ne transmet pas nécessairement toutes les autorisations requises pour utiliser l’objet. La plupart des objets effectuent des opérations pour lesquelles des autorisations supplémentaires sont requises. Par exemple, un utilisateur autorisé EXECUTE à sp_addlinkedserver créer un serveur lié, sauf si l’utilisateur est également membre du rôle serveur fixe sysadmin .

La résolution de noms par défaut permet de résoudre les noms de procédures non qualifiés dans la base de données des ressources. Par conséquent, le qualificateur sys n’est requis que lorsque vous spécifiez des vues de catalogue et des vues de gestion dynamique.

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

Les autorisations sur les objets système sont conservées pendant les mises à niveau de SQL Server.

Vous devez être dans la master base de données pour accorder des autorisations, et le principal auquel vous accordez les autorisations doit être un utilisateur de la master base de données. Autrement dit, s’il s’agit d’autorisations au niveau du serveur, vous ne pouvez pas les accorder aux principaux du serveur, uniquement aux principaux de base de données.

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

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

SELECT *
FROM master.sys.database_permissions AS dp
INNER 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

R. Accorder l’autorisation SELECT sur une vue

L’exemple suivant accorde au compte de connexion SQL ServerSylvester1 l’autorisation de sélectionner une vue qui répertorie les connexions SQL Server. L’exemple accorde ensuite l’autorisation supplémentaire requise pour afficher les métadonnées sur les connexions SQL Server que l’utilisateur ne possède pas.

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

B. Accorder l’autorisation EXECUTE sur une procédure stockée étendue

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

USE master;
GO
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO