OBJECTPROPERTYEX (Transact-SQL)

更新 : 2006 年 12 月 12 日

現在のデータベース内のスキーマ スコープ オブジェクトに関する情報を返します。このようなオブジェクトの一覧については、「sys.objects (Transact-SQL)」を参照してください。OBJECTPROPERTYEX は、データ定義言語 (DDL) トリガやイベント通知などの非スキーマ スコープ オブジェクトには使用できません。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

OBJECTPROPERTYEX ( id , property )

引数

  • id
    現在のデータベース内のオブジェクトの ID を表す式を指定します。id のデータ型は int で、現在のデータベース コンテキストでのスキーマ スコープ オブジェクトであることが前提となっています。
  • property
    ID で指定したオブジェクトについて、返される情報を含む式を指定します。戻り値の型は sql_variant です。次の表は、各プロパティ値に対する基本のデータ型です。

    ms188390.note(ja-jp,SQL.90).gifメモ :
    property が有効なプロパティ名でない場合、id が有効なオブジェクト ID でない場合、id が指定した property でサポートされていないオブジェクトの種類であった場合、または呼び出し側にオブジェクトのメタデータを表示する権限がない場合は、特に指定のない限り、NULL が返されます。

    プロパティ名

戻り値の型

sql_variant

例外

エラーが発生した場合、または呼び出し元にオブジェクトの表示権限がない場合は、NULL が返されます。

SQL Server 2005 では、そのユーザーが所有しているか、または権限を与えられているセキュリティ保護可能なアイテムのメタデータのみを表示できます。つまり、オブジェクトに対する権限がユーザーに与えられていない場合、メタデータを生成する組み込み関数 (OBJECTPROPERTYEX など) が NULL を返す可能性があります。詳細については、「メタデータ表示の構成」および「メタデータ表示のトラブルシューティング」を参照してください。

解説

データベース エンジンでは、object_id が現在のデータベース コンテキスト内にあることが前提となっています。別のデータベースにある object_id を参照するクエリでは、NULL または不適切な結果が返されます。たとえば、次のクエリでは、現在のデータベース コンテキストが master データベースとなっており、データベース エンジンはクエリで指定されているデータベースの代わりに、master データベース内の指定の object_id に対するプロパティ値を返そうとします。ビューの vEmployeemaster データベース内にないため、このクエリでは不正な結果が返されます。

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)

その他の技術情報

ユーザーとスキーマの分離

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 12 月 12 日

新しい内容 :
  • Service Pack 2 で使用できるようになった TableHasVarDecimalStorageFormat プロパティを追加しました。

2006 年 7 月 17 日

新しい内容 :
  • 「例外」を追加。

2005 年 12 月 5 日

変更内容
  • IsTableFunction および IsScalarFunction プロパティの定義を修正。
  • 例 C を修正。