SQL Server 2008 オンライン ブック (2009 年 7 月)
SQL Server システム カタログに対するクエリに関してよく寄せられる質問

このトピックでは、よく寄せられる質問の一覧を掲載しています。これらの質問に対する答えは、カタログ ビューに基づくクエリです。

よく寄せられる質問

以下のセクションでは、よく寄せられる質問をカテゴリ別に示しています。

データ型

テーブル、インデックス、ビュー、および制約

モジュール (ストアド プロシージャ、ユーザー定義関数、およびトリガ)

スキーマ、ユーザー、ロール、および権限

回答

指定したデータベース中でクラスタ化インデックスを持たないテーブルをすべて見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効なデータベース名に置き換えてから、クエリを実行します。

または、次の例に示すように、OBJECTPROPERTY 関数を使用します。

トップに戻る

指定されたスキーマに含まれるエンティティの所有者をすべて見つけるにはどのようにすればよいですか。

次のクエリの <database_name><schema_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

主キーを持たないすべてのテーブルを見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効なデータベース名に置き換えてから、クエリを実行します。

または次のクエリを実行します。

トップに戻る

インデックスを持たないすべてのテーブルを見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効なデータベース名に置き換えてから、クエリを実行します。

トップに戻る

ID 列を持つすべてのテーブルを見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効なデータベース名に置き換えてから、クエリを実行します。

または次のクエリを実行します。

ms345522.note(ja-jp,SQL.100).gifメモ :
このクエリは列の名前を返しません。

トップに戻る

指定されたテーブルの各列のデータ型を知るにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.table_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

指定した関数に対する依存関係を知るにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.function_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

データベース内のすべてのストアド プロシージャを見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

指定されたストアド プロシージャまたは関数に対するパラメータを見つけるにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.object_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

データベース内のすべてのユーザー定義関数を見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効なデータベース名に置き換えてから、クエリを実行します。

トップに戻る

データベース内のすべてのビューを見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効なデータベース名に置き換えてから、クエリを実行します。

トップに戻る

過去 n 日間に変更されたすべてのエンティティを見つけるにはどのようにすればよいですか。

次のクエリの <database_name><n_days> を有効な値に置き換えてから、クエリを実行します。

トップに戻る

指定されたテーブルの LOB データ型を見つけるにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.table_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

モジュールの定義を表示するにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.object_name> を有効な名前に置き換えてから、クエリを実行します。

または、次の例に示すように、OBJECT_DEFINITION 関数を使用します。

トップに戻る

サーバー レベルのトリガの定義を表示するにはどのようにすればよいですか。

指定されたテーブルの主キーの列を見つけるにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.table_name> を有効な名前に置き換えてから、クエリを実行します。

または、次の例に示すように、COL_NAME 関数を使用します。

トップに戻る

指定されたテーブルの外部キーの列を見つけるにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.table_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

指定されたプリンシパルに付与または定義された権限を見つけるにはどのようにすればよいですか。

次の例では、権限が確認されたエンティティの名前を返す関数を作成します。作成された関数は、後続のクエリで呼び出されます。この関数は権限を確認する各データベースに作成する必要があります。

トップに戻る

計算列の式で使われている列を判断するにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.table_name>、および <column_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

計算列の式で使われている列をすべて見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

指定された CLR ユーザー定義型または別名型に依存する列を見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効な名前に置き換え、<schema_name.data_type_name> をスキーマ修飾の CLR ユーザー定義型または別名型の有効な名前に置き換えてから、クエリを実行します。次のクエリを実行するには、db_owner ロールのメンバシップ、またはデータベース内のすべての依存列および計算列メタデータを参照するための権限が必要です。

次のクエリは、CLR ユーザー定義型または別名に依存する列の、絞り込まれたビューを返します。このビューへのアクセスは制限されていますが、結果セットは public ロールでも参照可能です。ユーザー型の REFERENCE 権限を他のユーザーに付与できる場合は、他のユーザーがその型を使用して作成したオブジェクトのメタデータを参照できる権限がなくても、このクエリを使用できます。

トップに戻る

指定された CLR ユーザー定義型または別名型に依存する計算列を見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効な名前に置き換え、<schema_name.data_type_name> をスキーマ修飾の CLR ユーザー定義型または別名型の有効な名前に置き換えてから、クエリを実行します。計算列の依存関係の詳細については、「SQL の依存関係について」を参照してください。

トップに戻る

指定された CLR ユーザー定義型または別名型に依存するパラメータを見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効な名前に置き換え、<schema_name.data_type_name> をスキーマ修飾の CLR ユーザー定義型または別名型の有効な名前に置き換えてから、クエリを実行します。次のクエリを実行するには、db_owner ロールのメンバシップ、またはデータベース内のすべての依存列および計算列メタデータを参照できる権限が必要です。

次のクエリは、CLR ユーザー定義型または別名に依存するパラメータの、絞り込まれたビューを返します。このビューへのアクセスは制限されていますが、結果セットは public ロールでも参照可能です。ユーザー型の REFERENCE 権限を他のユーザーに付与できる場合は、他のユーザーがその型を使用して作成したオブジェクトのメタデータを参照できる権限がなくても、このクエリを使用できます。

トップに戻る

指定された CLR ユーザー定義型に依存する CHECK 制約を見つけるにはどのようにすればよいですか。

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

トップに戻る

指定された CLR ユーザー定義型または別名データ型に依存するビュー、Transact-SQL 関数、Transact-SQL ストアド プロシージャを見つけるにはどのようにすればよいですか。

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

関数やプロシージャ内で定義されたパラメータは、暗黙のうちにスキーマにバインドされます。したがって、CLR ユーザー定義型または別名型に依存するパラメータは sys.sql_dependencies カタログ ビューを使用して表示できます。プロシージャやトリガはスキーマにバインドされません。つまり、プロシージャやトリガの本体で定義されている式と、CLR ユーザー定義型または別名型の間の依存関係は保守されません。CLR ユーザー定義型または別名型に依存する式を含むスキーマにバインドされたビューとスキーマにバインドされたユーザー定義関数は、sys.sql_dependencies カタログ ビューで管理されます。型と CLR 関数や CLR プロシージャとの間の依存関係は保守されません。

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

トップに戻る

指定されたテーブルの制約をすべて見つけるにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.table_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

指定されたテーブルのインデックスをすべて見つけるにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.table_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

指定された名前の列を含むすべてのオブジェクトを見つけるにはどのようにすればよいですか。

次のクエリの <database_name><column_name> を有効な名前に置き換えてから、クエリを実行します。

または、

トップに戻る

指定されたデータベースでユーザー定義型のテーブルをすべて見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

パーティション分割されたテーブルとインデックスをすべて見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効な名前に置き換えてから、クエリを実行します。

トップに戻る

指定されたオブジェクトの統計情報をすべて見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効な名前に置き換え、<schema_name.object_name> をテーブル、インデックス付きビュー、またはテーブル値関数の有効な名前に置き換えてから、クエリを実行します。

トップに戻る

指定されたオブジェクトの統計情報と統計列をすべて見つけるにはどのようにすればよいですか。

次のクエリの <database_name> を有効な名前に置き換え、<schema_name.object_name> をテーブル、インデックス付きビュー、またはテーブル値関数の有効な名前に置き換えてから、クエリを実行します。

トップに戻る

ビューの定義を見つけるにはどのようにすればよいですか。

次のクエリの <database_name><schema_name.object_name> を有効な名前に置き換えてから、クエリを実行します。

または、次の例に示すように、OBJECT_DEFINITION 関数を使用します。

トップに戻る

参照

概念

SQL Server システム カタログに対するクエリ
SQL の依存関係について
メタデータ表示の構成

その他の技術情報

システム テーブルのシステム ビューへのマッピング (Transact-SQL)
メタデータ表示のトラブルシューティング

ヘルプおよび情報

SQL Server 2008 の参考資料の入手
タグ :


Page view tracker