sp_depends システムストアドプロシージャを使用して、プロシージャやビューが内部で依存しているテーブル情報などを取得することができます。今回はこのプロシージャを使用するサンプルを掲載します。

Books Online での sp_depends の説明
テーブルまたはビューに従属するビューおよびプロシージャ、ビューまたはプロシージャが従属するテーブルおよびビューなど、データベース オブジェクトの従属性に関する情報を表示します。現在のデータベース内に存在しないオブジェクトへの参照はレポートされません。

動作確認は SQL Server 2005 Developer Edition を使用しています。

1. オブジェクトの依存しているデータベースオブジェクト情報を取得する

sp_depends プロシージャを使用して、テーブル dbo.Article に従属しているオブジェクトの一覧を取得するサンプルを掲載します。また、ファンクション udf_getArticle が従属しているテーブルの列情報を取得しています。

サンプルでは、さらにOBJECT_DEFENITION 関数を使用してオブジェクトの定義テキストを表示する方法も掲載しています。

-- テーブル、ビューやストアドプロシージャなどに関連する
-- テーブルやビュープロシージャ
EXEC sp_depends 'dbo.Article'

-- プロシージャに関連するテーブルのカラム情報
-- を取得する
EXEC sp_depends 'dbo.udf_getArticle'

-- ユーザー定義オブジェクトのソース テキストを取得する
-- プロシージャやファンクションの定義情報を取得できます。
SELECT OBJECT_DEFINITION(OBJECT_ID('dbo.udf_getArticle'))

SELECT OBJECT_DEFINITION(OBJECT_ID('sys.sp_helptext'))

2. まとめ

今回の説明は以上です。データベースオブジェクトの定義情報を変更する場合に影響がないかをチェックする一つの方法としてsp_dependsが使用できると思います。OBJECT_DEFINITION 関数はプロシージャなどの定義情報を参照できる便利な関数です。