Просмотр определений объектов
При просмотре исходного кода 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.