OBJECTPROPERTYEX (Transact-SQL)
更新 : 2006 年 12 月 12 日
現在のデータベース内のスキーマ スコープ オブジェクトに関する情報を返します。このようなオブジェクトの一覧については、「sys.objects (Transact-SQL)」を参照してください。OBJECTPROPERTYEX は、データ定義言語 (DDL) トリガやイベント通知などの非スキーマ スコープ オブジェクトには使用できません。
構文
OBJECTPROPERTYEX ( id , property )
引数
- id
現在のデータベース内のオブジェクトの ID を表す式を指定します。id のデータ型は int で、現在のデータベース コンテキストでのスキーマ スコープ オブジェクトであることが前提となっています。
property
ID で指定したオブジェクトについて、返される情報を含む式を指定します。戻り値の型は sql_variant です。次の表は、各プロパティ値に対する基本のデータ型です。メモ : property が有効なプロパティ名でない場合、id が有効なオブジェクト ID でない場合、id が指定した property でサポートされていないオブジェクトの種類であった場合、または呼び出し側にオブジェクトのメタデータを表示する権限がない場合は、特に指定のない限り、NULL が返されます。 プロパティ名
戻り値の型
sql_variant
例外
エラーが発生した場合、または呼び出し元にオブジェクトの表示権限がない場合は、NULL が返されます。
SQL Server 2005 では、そのユーザーが所有しているか、または権限を与えられているセキュリティ保護可能なアイテムのメタデータのみを表示できます。つまり、オブジェクトに対する権限がユーザーに与えられていない場合、メタデータを生成する組み込み関数 (OBJECTPROPERTYEX など) が NULL を返す可能性があります。詳細については、「メタデータ表示の構成」および「メタデータ表示のトラブルシューティング」を参照してください。
解説
データベース エンジンでは、object_id が現在のデータベース コンテキスト内にあることが前提となっています。別のデータベースにある object_id を参照するクエリでは、NULL または不適切な結果が返されます。たとえば、次のクエリでは、現在のデータベース コンテキストが master
データベースとなっており、データベース エンジンはクエリで指定されているデータベースの代わりに、master
データベース内の指定の object_id に対するプロパティ値を返そうとします。ビューの vEmployee
は master
データベース内にないため、このクエリでは不正な結果が返されます。
USE master;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO
OBJECTPROPERTYEX(view_id,'IsIndexable'') は、多くのコンピュータ リソースを使用する可能性があります。これは、IsIndexable プロパティを評価するために、ビュー定義、正規化、および部分最適化の解析が必要なためです。IsIndexable プロパティではインデックスを作成できるテーブルまたはビューを指定しますが、特定のインデックス キーの要件が満たされない場合、インデックスの実際の作成は失敗します。詳細については、「CREATE INDEX (Transact-SQL)」を参照してください。
OBJECTPROPERTYEX(table_id,'TableHasActiveFulltextIndex') は、テーブルの少なくとも 1 つの列にインデックスが作成されている場合は、1 (TRUE) を返します。インデックス作成で先頭の列が追加されるとすぐ、フルテキスト インデックス作成が自動的にアクティブになります。
メタデータの表示に関する制限は、結果セットに適用されます。詳細については、「メタデータ表示の構成」を参照してください。
例
A. オブジェクトの基本の種類を検索する
次の例では、AdventureWorks
データベース内の Employee
テーブルに対して SYNONYM MyEmployeeTable
を作成した後、SYNONYM の基本の種類を返します。
USE AdventureWorks;
GO
CREATE SYNONYM MyEmployeeTable FOR HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX ( object_id(N'MyEmployeeTable'), N'BaseType')AS [Base Type];
GO
結果セットでは、基になるオブジェクトである Employee
テーブルの基本の種類が、ユーザー テーブルであることが示されます。
Base Type
--------
U
B. プロパティ値を返す
次の例では、指定されたテーブルの UPDATE トリガ数を返します。
USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'HumanResources.Employee'), N'TABLEUPDATETRIGGERCOUNT');
GO
C. FOREIGN KEY 制約を含むテーブルを探す
次の例では、TableHasForeignKey
プロパティを使用し、FOREIGN KEY 制約を含むすべてのテーブルを返します。
USE AdventureWorks;
GO
SELECT name, object_id, schema_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTYEX(object_id, N'TableHasForeignKey') = 1
ORDER BY name;
GO
参照
関連項目
CREATE SYNONYM (Transact-SQL)
メタデータ関数 (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)
OBJECT_NAME (Transact-SQL)
sys.objects (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
その他の技術情報
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 12 月 12 日 |
|
2006 年 7 月 17 日 |
|
2005 年 12 月 5 日 |
|