sys.sql_dependencies (Transact-SQL)

更新 : 2006 年 12 月 12 日

他の参照している (依存) オブジェクトを定義する SQL 式またはステートメントで参照された場合、参照される (独立) エンティティ上の依存関係ごとに 1 行のデータを保持します。sys.sql_dependencies ビューは、エンティティ間の名前による依存関係を追跡することを目的としています。sys.sql_dependencies の各行では、参照元オブジェクトの保存されている SQL 式に、参照先エンティティが名前で表示されます。さらに、参照元オブジェクトにスキーマ バインド式が含まれている場合、依存関係が強制されます。詳細については、「SQL の依存関係について」を参照してください。

列名 データ型 説明

class

tinyint

参照される (独立) エンティティのクラスを識別します。

0 = オブジェクトまたは列 (非スキーマ バインド参照のみ)

1 = オブジェクトまたは列 (スキーマ バインド参照)

2 = 型 (スキーマ バインド参照)

3 = XML スキーマ コレクション (スキーマ バインド参照)

4 = パーティション関数 (スキーマ バインド参照)

class_desc

nvarchar(60)

参照される (独立) エンティティのクラスの説明です。

  • OBJECT_OR_COLUMN_REFERENCE_NON_SCHEMA_BOUND
  • OBJECT_OR_COLUMN_REFERENCE_SCHEMA_BOUND
  • TYPE_REFERENCE
  • XML_SCHEMA_COLLECTION_REFERENCE
  • PARTITION_FUNCTION_REFERENCE

object_id

int

参照している (依存) オブジェクトの ID です。

column_id

int

依存 ID が列の場合、参照している (依存) 列の ID です。それ以外の場合は 0 です。

referenced_major_id

int

次の定義に従ってクラスの値によって解釈される、参照される (独立) エンティティの ID です。

0、1 = オブジェクトまたは列のオブジェクト ID

2 = 型 ID

3 = XML スキーマ コレクション ID

referenced_minor_id

int

クラスの値によって次に示すように解釈される、参照される (独立) エンティティの補助 ID です。

この値は、class の値によって異なります。

0, class = 0 の場合、referenced_minor_id は列 ID です。列ではない場合は 0 です。

1, class = 1 の場合、referenced_minor_id は列 ID です。列ではない場合は 0 です。

それ以外の場合は、referenced_minor_id = 0 です。

is_selected

bit

オブジェクトまたは列が選択されています。

is_updated

bit

オブジェクトまたは列が更新されています。

is_select_all

bit

オブジェクトが SELECT * ステートメントで使用されています (オブジェクトレベルのみ)。

解説

参照している (依存) オブジェクトが作成された時点で、参照される (独立) エンティティが存在する場合にのみ、依存関係が CREATE の間に確立されます。名前の遅延解決が行われるため、参照されるエンティティは、作成時には存在していなくてもかまいません。この場合、依存関係の行が作成されません。また、動的 SQL を使用して参照されるエンティティは、依存関係を確立しません。

参照される (独立) エンティティが DROP を使用して削除された場合、依存関係の行は自動的に削除されます。依存関係の行を再確立するには、正しい依存関係の順序で CREATE を使用して、両方を再作成する必要があります。

スキーマ バインド依存関係と非スキーマ バインド依存関係は、オブジェクトに対して追跡されます。CHECK 制約、既定値、および計算列の参照は、暗黙的にスキーマ バインドになります。型、XML スキーマ コレクション、およびパーティション関数に対する依存関係は、スキーマ バインド依存関係に対してのみ追跡されます。SQL Server 2005 の Service Pack 1 以前では、Transact-SQL 関数または プロシージャで定義されるパラメータは暗黙的にスキーマ バインドとなります。したがって、CLR ユーザー定義型別名型、または XML スキーマ コレクション型に依存するパラメータは、sys.sql_dependencies カタログ ビューを使用して表示できます。ただし、これらのオブジェクトは名前を変更できません。SQL Server 2005 Service Pack 2 では、これらのオブジェクトに依存するパラメータは、スキーマ バインドで Transact-SQL モジュールを作成した場合のみ、カタログ ビューで追跡されます。スキーマ バインドでないモジュールのパラメータとして使用される CLR ユーザー定義型、別名型、または XML スキーマ コレクション型は、名前を変更できますが、sp_refreshsqlmodule を使用したモジュール定義の更新が必要となる場合があります。

A. 指定された関数の依存関係を探す

次の例では、指定された関数の依存関係を返します。次のクエリの <database_name><schema_name.function_name> を有効な名前に置き換えてから、クエリを実行します。

USE <database_name>;
GO
SELECT OBJECT_NAME(object_id) AS referencing_object_name
    ,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
    ,*
FROM sys.sql_dependencies
WHERE referenced_major_id = OBJECT_ID('<schema_name.function_name>')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);
GO 

B. 指定された CLR ユーザー定義型に依存する CHECK 制約を探す

次のクエリの <database_name> を有効な名前に置き換え、<schema_name.data_type_name> をスキーマ修飾の CLR ユーザー定義型の有効な名前に置き換えてから、クエリを実行します。

USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS schema_name
    ,OBJECT_NAME(o.parent_object_id) AS table_name
    ,OBJECT_NAME(o.object_id) AS constraint_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o ON o.object_id = d.object_id
WHERE referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
    AND class = 2 -- schema-bound references to type
    AND OBJECTPROPERTY(o.object_id, 'IsCheckCnst') = 1; -- exclude non-CHECK dependencies
GO

C. 指定された CLR ユーザー定義型または別名データ型に依存するビュー、Transact-SQL 関数、および Transact-SQL ストアド プロシージャを探す

次のクエリは、指定された CLR ユーザー定義型または別名型に関して、ビュー、Transact-SQL 関数、および Transact-SQL ストアド プロシージャ内でスキーマにバインドされた依存関係をすべて返します。

USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS dependent_object_schema
  ,OBJECT_NAME(o.object_id) AS dependent_object_name
  ,o.type_desc AS dependent_object_type
  ,d.class_desc AS kind_of_dependency
  ,TYPE_NAME (d.referenced_major_id) AS type_name
FROM sys.sql_dependencies AS d 
JOIN sys.objects AS o
  ON d.object_id = o.object_id
  AND o.type IN ('FN','IF','TF', 'V', 'P')
WHERE d.class = 2 -- dependencies on types
  AND d.referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
ORDER BY dependent_object_schema, dependent_object_name;
GO

参照

関連項目

カタログ ビュー (Transact-SQL)
オブジェクト カタログ ビュー (Transact-SQL)
sp_rename (Transact-SQL)
sp_refreshsqlmodule (Transact-SQL)

その他の技術情報

ユーザー定義型の実装
SQL の依存関係について
SQL Server システム カタログに対するクエリに関してよく寄せられる質問
サーバー上の XML スキーマ コレクションの管理

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 12 月 12 日

追加内容 :
  • ユーザー定義型、別名型、および XML スキーマ コレクション型のオブジェクトを Transact-SQL モジュールのパラメータとして宣言する場合の依存関係に関する情報を追加。
  • 「例」を追加。