Affichage des définitions d'objet
Les règles de l'affichage du code source Transact-SQL des objets de base de données sont plus strictes que celles de l'affichage des métadonnées. Pour afficher le texte de définition Transact-SQL d'un objet, l'utilisateur doit soit être le propriétaire de l'objet, soit disposer d'une des autorisations suivantes sur l'objet :
CONTROL
ALTER
TAKE OWNERSHIP
VIEW DEFINITION
Voici quelques exemples de fonctionnement de ces règles :
Si un utilisateur dispose de l'autorisation ALTER sur une table myTable, il peut consulter la définition Transact-SQL des sous-composants liés à la table dans la colonne definition de chacune des vues de catalogue répertoriées dans le tableau suivant. Si un utilisateur ne possède aucune des autorisations mentionnées ci-dessus ou n'est pas le propriétaire de l'objet, la définition Transact-SQL contenue dans la colonne definition de la vue de catalogue a la valeur NULL.
Si l'utilisateur n'est pas le propriétaire de myTable et qu'il ne dispose que de l'autorisation SELECT sur la table, lorsqu'il accède aux vues de catalogue suivantes, les colonnes definition ont la valeur NULL.
Nom de vue de catalogue
Définitions Transact-SQL de
sys.sql_modules
Tous les déclencheurs contenus dans mytable
sys.computed_columns
Toutes les colonnes calculées contenues dans myTable
sys.check_constraints
Toutes les contraintes CHECK contenues dans myTable
sys.default_constraints
Toutes les contraintes DEFAULT contenues dans myTable
Supposez qu'un utilisateur dispose de l'autorisation EXECUTE sur la procédure myProcedure. Lorsqu'il tente d'afficher la définition Transact-SQL de la procédure en accédant à la vue de catalogue sys.sql_modules, la colonne definition a la valeur NULL. Par contre, si l'utilisateur possède l'autorisation TAKE OWNERSHIP sur myProcedure, il pourra consulter la définition Transact-SQL de la procédure dans la colonne definition de sys.sql_modules.