Просмотр определений объектов

При просмотре исходного кода Transact-SQL объектов базы данных применяются более строгие правила, чем при просмотре метаданных. Для просмотра текста определения Transact-SQL какого-либо объекта пользователь либо должен быть его владельцем, либо ему должно быть предоставлено на этот объект одно из следующих разрешений:

  • CONTROL

  • ALTER

  • TAKE OWNERSHIP

  • VIEW DEFINITION

Ниже приведены примеры работы этих правил:

  • Например, если пользователю предоставлено разрешение ALTER на таблицу myTable, он может просматривать определение Transact-SQL в столбце definition во всех представлениях каталогов, перечисленных в приведенной ниже таблице. Если пользователь не имеет ни одного из указанных выше разрешений или не является владельцем объекта, определение Transact-SQL в столбце definition представления каталога имеет значение NULL.

  • Если пользователь не является владельцем таблицы myTable и ему предоставлено только разрешение SELECT на эту таблицу, при доступе пользователя к следующим представлениям каталогов столбцы definition имеют значение NULL.

    Имя представления каталога

    Определения Transact-SQL для

    sys.sql_modules

    Все триггеры в таблице mytable

    sys.computed_columns

    Все вычисляемые столбцы в таблице myTable

    sys.check_constraints

    Все ограничения CHECK в таблице myTable

    sys.default_constraints

    Все ограничения DEFAULT в таблице myTable

  • Предположим, что пользователю предоставлено разрешение EXECUTE на выполнение процедуры myProcedure. Если пользователь пытается просмотреть определение Transact-SQL процедуры, обращаясь к представлению каталога sys.sql_modules, столбец definition содержит значение NULL. С другой стороны, пользователь, которому предоставлено разрешение TAKE OWNERSHIP на выполнение процедуры myProcedure, может просмотреть определение Transact-SQL процедуры в столбце definition представления sys.sql_modules.