Partage via


DENY – refus d'autorisations d'objet système (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Permet de refuser 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.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ sys.]
Le qualificateur sys est obligatoire uniquement quand vous faites référence à des vues de catalogue ou à des vues de gestion dynamique.

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

principal
Spécifie le principal pour lequel l'autorisation est révoquée.

Remarques

Cette instruction permet de refuser 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 (mssqlsystemresource). La base de données des ressources est en lecture seule. Un lien à l’objet est exposé sous la forme d’un enregistrement dans le schéma sys de chaque base de données.

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 est obligatoire uniquement quand vous spécifiez des vues de catalogue et des vues de gestion dynamique.

Attention

Le refus d'autorisations sur des objets système entraîne l'échec des applications qui en dépendent. SQL Server Management Studio utilise les affichages catalogue et peut ne pas fonctionner comme prévu si vous modifiez les autorisations par défaut sur les affichages catalogue.

Le refus 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

Dans l'exemple ci-dessous, l'autorisation EXECUTE sur xp_cmdshell est refusée à public.

DENY EXECUTE ON sys.xp_cmdshell TO public;  
GO  

Voir aussi

Conventions de la syntaxe Transact-SQL
sys.database_permissions (Transact-SQL)
GRANT – octroi d'autorisations d'objet système (Transact-SQL)
REVOKE – révocation d'autorisations d'objet système (Transact-SQL)