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.