オブジェクト定義の表示
データベース オブジェクトの Transact-SQL ソース コードの表示には、メタデータの表示よりも厳しいルールが設けられています。オブジェクトの Transact-SQL 定義を参照するには、そのオブジェクトの所有者であるか、そのオブジェクトに対して次の権限のいずれかが許可されている必要があります。
CONTROL
ALTER
TAKE OWNERSHIP
VIEW DEFINITION
次に、これらのルールがどのように機能するかを示す例をいくつか示します。
myTable テーブルに対する ALTER 権限が許可されている場合は、次の表に示す各カタログ ビューの definition 列で、このテーブルに関連したサブコンポーネントの Transact-SQL 定義を表示できます。上記のいずれの権限もなく、オブジェクトの所有者でもない場合は、カタログ ビューの definition 列の Transact-SQL 定義は NULL になります。
ユーザーが myTable のテーブル所有者ではなく、このテーブルに対して SELECT 権限しか許可されていない場合、次のカタログ ビューにアクセスすると、definition 列は NULL になります。
カタログ ビュー名
Transact-SQL 定義の対象
sys.sql_modules
myTable のすべてのトリガ
sys.computed_columns
myTable のすべての計算列
sys.check_constraints
myTable のすべての CHECK 制約
sys.default_constraints
myTable のすべての DEFAULT 制約
myProcedure プロシージャに対する EXECUTE 権限が許可されている場合を考えてみます。sys.sql_modules カタログ ビューにアクセスして、プロシージャの Transact-SQL 定義を表示しようとした場合、definition 列は NULL 値になります。逆に、myProcedure の TAKE OWNERSHIP 権限が許可されている場合は、sys.sql_modules の definition 列に、プロシージャの Transact-SQL 定義が表示されます。