OBJECTPROPERTYEX (Transact-SQL)
現在のデータベース内のスキーマ スコープ オブジェクトに関する情報を返します。このようなオブジェクトの一覧については、「sys.objects (Transact-SQL)」を参照してください。OBJECTPROPERTYEX は、データ定義言語 (DDL) トリガやイベント通知などの非スキーマ スコープ オブジェクトには使用できません。
構文
OBJECTPROPERTYEX ( id , property )
引数
id
現在のデータベース内のオブジェクトの ID を表す式を指定します。id のデータ型は int で、現在のデータベース コンテキストでのスキーマ スコープ オブジェクトであることが前提となっています。property
ID で指定したオブジェクトについて、返される情報を含む式を指定します。戻り値の型は sql_variant です。次の表は、各プロパティ値に対する基本のデータ型です。注意 property が有効なプロパティ名でない場合、id が有効なオブジェクト ID でない場合、id が指定した property でサポートされていないオブジェクトの種類であった場合、または呼び出し側にオブジェクトのメタデータを表示する権限がない場合は、特に指定のない限り、NULL が返されます。
プロパティ名
オブジェクトの種類
説明と戻り値
BaseType
任意のスキーマ スコープ オブジェクト
オブジェクトの基本の種類。指定したオブジェクトが SYNONYM の場合、基になるオブジェクトの基本の種類が返されます。
NULL 以外 = オブジェクトの種類
基本データ型: char(2)
CnstIsClustKey
制約
クラスタ化インデックスを指定した PRIMARY KEY 制約。
1 = TRUE
0 = FALSE
基本データ型: int
CnstIsColumn
制約
単一の列での、CHECK、DEFAULT、または FOREIGN KEY 制約。
1 = TRUE
0 = FALSE
基本データ型: int
CnstIsDeleteCascade
制約
ON DELETE CASCADE オプションを指定した FOREIGN KEY 制約。
1 = TRUE
0 = FALSE
基本データ型: int
CnstIsDisabled
制約
制約の無効化。
1 = TRUE
0 = FALSE
基本データ型: int
CnstIsNonclustKey
制約
非クラスタ化インデックスを指定した PRIMARY KEY 制約。
1 = TRUE
0 = FALSE
基本データ型: int
CnstIsNotRepl
制約
制約を NOT FOR REPLICATION キーワードを使って定義。
1 = TRUE
0 = FALSE
基本データ型: int
CnstIsNotTrusted
制約
既存の行を確認せずに制約が有効化されており、すべての行に制約が保持されない可能性があります。
1 = TRUE
0 = FALSE
基本データ型: int
CnstIsUpdateCascade
制約
ON UPDATE CASCADE オプションを指定した FOREIGN KEY 制約。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsAfterTrigger
トリガ
AFTER トリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsAnsiNullsOn
Transact-SQL 関数、Transact-SQL プロシージャ、Transact-SQL トリガ、ビュー
作成時における ANSI_NULLS の設定。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsDeleteTrigger
トリガ
DELETE トリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsFirstDeleteTrigger
トリガ
テーブルに対して DELETE を実行するときに最初に起動されるトリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsFirstInsertTrigger
トリガ
テーブルに対して INSERT を実行するときに最初に起動されるトリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsFirstUpdateTrigger
トリガ
テーブルに対して UPDATE を実行するときに最初に起動されるトリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsInsertTrigger
トリガ
INSERT トリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsInsteadOfTrigger
トリガ
INSTEAD OF トリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsLastDeleteTrigger
トリガ
テーブルに対して DELETE を実行するときに最後に起動されるトリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsLastInsertTrigger
トリガ
テーブルに対して INSERT を実行するときに最後に起動されるトリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsLastUpdateTrigger
トリガ
テーブルに対して UPDATE を実行するときに最後に起動されるトリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsQuotedIdentOn
Transact-SQL 関数、Transact-SQL プロシージャ、Transact-SQL トリガ、ビュー
作成時における QUOTED_IDENTIFIER の設定。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsStartup
プロシージャ
スタートアップ プロシージャ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsTriggerDisabled
トリガ
トリガの無効化。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsTriggerNotForRepl
トリガ
NOT FOR REPLICATION として定義されているトリガ。
1 = TRUE
0 = FALSE
基本データ型: int
ExecIsUpdateTrigger
トリガ
UPDATE トリガ。
1 = TRUE
0 = FALSE
基本データ型: int
HasAfterTrigger
テーブル、ビュー
テーブルまたはビューに AFTER トリガがあります。
1 = TRUE
0 = FALSE
基本データ型: int
HasDeleteTrigger
テーブル、ビュー
テーブルまたはビューに DELETE トリガがあります。
1 = TRUE
0 = FALSE
基本データ型: int
HasInsertTrigger
テーブル、ビュー
テーブルまたはビューに INSERT トリガがあります。
1 = TRUE
0 = FALSE
基本データ型: int
HasInsteadOfTrigger
テーブル、ビュー
テーブルまたはビューに INSTEAD OF トリガがあります。
1 = TRUE
0 = FALSE
基本データ型: int
HasUpdateTrigger
テーブル、ビュー
テーブルまたはビューに UPDATE トリガがあります。
1 = TRUE
0 = FALSE
基本データ型: int
IsAnsiNullsOn
Transact-SQL 関数、Transact-SQL プロシージャ、Transact-SQL トリガ、ビュー
テーブルに対する ANSI NULLS オプションの設定をオンに指定します。NULL 値に対するすべての比較は UNKNOWN として評価されます。この設定は、テーブルが存在する限り、計算列や制約をはじめとするテーブル定義内のすべての式に適用されます。
1 = TRUE
0 = FALSE
基本データ型: int
IsCheckCnst
任意のスキーマ スコープ オブジェクト
CHECK 制約。
1 = TRUE
0 = FALSE
基本データ型: int
IsConstraint
任意のスキーマ スコープ オブジェクト
制約。
1 = TRUE
0 = FALSE
基本データ型: int
IsDefault
任意のスキーマ スコープ オブジェクト
既定のバインド。
1 = TRUE
0 = FALSE
基本データ型: int
IsDefaultCnst
任意のスキーマ スコープ オブジェクト
DEFAULT 制約。
1 = TRUE
0 = FALSE
基本データ型: int
IsDeterministic
スカラおよびテーブル値関数、ビュー
関数またはビューの決定性を示すプロパティ。
1 = 決定的
0 = 非決定的
基本データ型: int
IsEncrypted
Transact-SQL 関数、Transact-SQL プロシージャ、テーブル、Transact-SQL トリガ、ビュー
モジュール ステートメントの元のテキストが、暗号化した形式に変換されたことを示します。暗号化した形式の出力は、SQL Server 2005 内のどのカタログ ビューでも直接見ることはできません。システム テーブルまたはデータベース ファイルへのアクセス権を持たないユーザーは、暗号化した形式のテキストを取得できません。DAC ポート経由でシステム テーブルにアクセスする権限、または直接データベース ファイルにアクセスする権限を持っているユーザーは、このテキストを使用できます。また、サーバー プロセスにデバッガをアタッチできるユーザーは、実行時、元のプロシージャをメモリから取得できます。
1 = 暗号化されている
0 = 暗号化されていない
基本データ型: int
IsExecuted
任意のスキーマ スコープ オブジェクト
オブジェクトは実行可能 (ビュー、プロシージャ、関数、またはトリガ)。
1 = TRUE
0 = FALSE
基本データ型: int
IsExtendedProc
任意のスキーマ スコープ オブジェクト
拡張プロシージャ。
1 = TRUE
0 = FALSE
基本データ型: int
IsForeignKey
任意のスキーマ スコープ オブジェクト
FOREIGN KEY 制約。
1 = TRUE
0 = FALSE
基本データ型: int
IsIndexed
テーブル、ビュー
インデックス付きのテーブルまたはビュー。
1 = TRUE
0 = FALSE
基本データ型: int
IsIndexable
テーブル、ビュー
インデックスを作成できるテーブルまたはビュー。
1 = TRUE
0 = FALSE
基本データ型: int
IsInlineFunction
関数
インライン関数。
1 = インライン関数
0 = インライン関数ではない
基本データ型: int
IsMSShipped
任意のスキーマ スコープ オブジェクト
SQL Server のインストール中に作成されたオブジェクト。
1 = TRUE
0 = FALSE
基本データ型: int
IsPrecise
計算列、関数、ユーザー定義型、ビュー
浮動小数点演算など、不正確な計算を含むオブジェクトかどうかを示します。
1 = 正確
0 = 不正確
基本データ型: int
IsPrimaryKey
任意のスキーマ スコープ オブジェクト
PRIMARY KEY 制約。
1 = TRUE
0 = FALSE
基本データ型: int
IsProcedure
任意のスキーマ スコープ オブジェクト
プロシージャ。
1 = TRUE
0 = FALSE
基本データ型: int
IsQuotedIdentOn
CHECK 制約、DEFAULT 定義、Transact-SQL 関数、Transact-SQL プロシージャ、テーブル、Transact-SQL トリガ、ビュー
オブジェクトの引用符で囲まれた識別子の設定をオンに指定します。オブジェクト定義に含まれるすべての式の識別子は、二重引用符によって区切られます。
1 = TRUE
0 = FALSE
基本データ型: int
IsQueue
任意のスキーマ スコープ オブジェクト
Service Broker キュー。
1 = TRUE
0 = FALSE
基本データ型: int
IsReplProc
任意のスキーマ スコープ オブジェクト
レプリケーション プロシージャ。
1 = TRUE
0 = FALSE
基本データ型: int
IsRule
任意のスキーマ スコープ オブジェクト
ルールのバインド。
1 = TRUE
0 = FALSE
基本データ型: int
IsScalarFunction
関数
スカラ値関数。
1 = スカラ値関数
0 = スカラ値関数ではない
基本データ型: int
IsSchemaBound
関数、ビュー
SCHEMABINDING を使用して作成されたスキーマ バインド関数またはビュー。
1 = スキーマ バインド
0 = 非スキーマ バインド
基本データ型: int
IsSystemTable
テーブル
システム テーブル。
1 = TRUE
0 = FALSE
基本データ型: int
IsSystemVerified
計算列、関数、ユーザー定義型、ビュー
オブジェクトの精度と決定性のプロパティを SQL Server で確認できます。
1 = TRUE
0 = FALSE
基本データ型: int
IsTable
テーブル
テーブル。
1 = TRUE
0 = FALSE
基本データ型: int
IsTableFunction
関数
テーブル値関数。
1 = テーブル値関数
0 = テーブル値関数ではない
基本データ型: int
IsTrigger
任意のスキーマ スコープ オブジェクト
トリガ。
1 = TRUE
0 = FALSE
基本データ型: int
IsUniqueCnst
任意のスキーマ スコープ オブジェクト
UNIQUE 制約。
1 = TRUE
0 = FALSE
基本データ型: int
IsUserTable
テーブル
ユーザー定義テーブル。
1 = TRUE
0 = FALSE
基本データ型: int
IsView
ビュー
ビュー。
1 = TRUE
0 = FALSE
基本データ型: int
OwnerId
任意のスキーマ スコープ オブジェクト
オブジェクトの所有者。
注意スキーマ所有者はオブジェクト所有者である必要はありません。たとえば、子オブジェクト (parent_object_id が NULL でないオブジェクト) では、常に親オブジェクトと同じ所有者 ID が返されます。NULL 以外 = オブジェクト所有者のデータベース ユーザー ID
NULL = サポートされていないオブジェクトの種類、またはオブジェクト ID が有効でない
基本データ型: int
SchemaId
任意のスキーマ スコープ オブジェクト
オブジェクトに関連付けられているスキーマの ID。
NULL 以外 = オブジェクトのスキーマ ID
基本データ型: int
SystemDataAccess
関数、ビュー
SQL Server のローカル インスタンス内にある、システム データ、システム カタログまたは仮想システム テーブルへ、オブジェクトがアクセスします。
0 = なし
1 = 読み取り
基本データ型: int
TableDeleteTrigger
テーブル
テーブルに DELETE トリガがあります。
>1 = 指定された種類の最初のトリガの ID
基本データ型: int
TableDeleteTriggerCount
テーブル
テーブルに、指定された数の DELETE トリガがあります。
NULL 以外 = DELETE トリガの数
基本データ型: int
TableFullTextMergeStatus
テーブル
現在マージ中のフルテキスト インデックスがテーブルにあるかどうかを示します。
0 = テーブルにフルテキスト インデックスがないか、フルテキスト インデックスがマージ中ではない
1 = フルテキスト インデックスがマージ中
TableFullTextBackgroundUpdateIndexOn
テーブル
テーブルでは、フルテキスト インデックスのバックグラウンド更新 (自動変更の追跡) が有効になっています。
1 = TRUE
0 = FALSE
基本データ型: int
TableFulltextCatalogId
テーブル
テーブルのフルテキスト インデックス データが存在する、フルテキスト カタログの ID。
0 以外 = フルテキスト インデックス テーブル内の行を識別する一意なインデックスに関連付けられた、フルテキスト カタログ ID
0 = テーブルにフルテキスト インデックスはない
基本データ型: int
TableFullTextChangeTrackingOn
テーブル
テーブルでは、フルテキストの変更の追跡が有効になっています。
1 = TRUE
0 = FALSE
基本データ型: int
TableFulltextDocsProcessed
テーブル
フルテキスト インデックス作成の開始以降に処理された行の数。フルテキスト検索用にインデックスが作成されるテーブルでは、1 行のすべての列が、インデックスが作成される 1 つのドキュメントの一部と見なされます。
0 = アクティブ クロールまたはフルテキスト インデックス作成は完了していない
> 0 = 次のいずれか
完全、増分、または手動による変更追跡の作成開始以降、挿入操作や更新操作で処理されたドキュメントの数
バックグラウンド更新インデックス作成の有効化、フルテキスト インデックス スキーマの変更、フルテキスト カタログの再構築、または SQL Server のインスタンスの再起動などの変更の追跡以降、挿入操作や更新操作で処理された行数
NULL = テーブルにフルテキスト インデックスはない
基本データ型: int
注 このプロパティは、削除された行を監視またはカウントしません。
TableFulltextFailCount
テーブル
フルテキスト検索でインデックスが作成されなかった行の数。
0 = 作成完了
>0 = 次のいずれか
完全、増分、または手動による変更追跡の作成開始以降に、インデックスが作成されなかったドキュメントの数。
インデックスのバックグラウンド更新による変更追跡の場合、作成の開始または再開以降にインデックスが作成されなかった行数。これは、スキーマ変更、カタログの再構築、サーバーの再起動などにより発生する場合があります。
NULL = テーブルにフルテキスト インデックスはない
基本データ型: int
TableFulltextItemCount
テーブル
NULL 以外 = フルテキスト インデックスが正常に作成された行の数。
NULL = テーブルにフルテキスト インデックスはない
基本データ型: int
TableFulltextKeyColumn
テーブル
フルテキスト インデックス定義に関係している、一意な単一列インデックスに関連付けられた列の ID。
0 = テーブルにフルテキスト インデックスはない
基本データ型: int
TableFulltextPendingChanges
テーブル
処理待ちになっている、変更の追跡エントリの数。
0 = 変更の追跡は有効でない
NULL = テーブルにフルテキスト インデックスはない
基本データ型: int
TableFulltextPopulateStatus
テーブル
0 = アイドル状態
1 = 全体を作成中
2 = 増分作成中
3 = 追跡した変更を伝達中
4 = 自動変更の追跡など、インデックスのバックグラウンド更新が進行中
5 = フルテキスト インデックス作成が絞り込みまたは停止された
基本データ型: int
TableHasActiveFulltextIndex
テーブル
テーブルにアクティブなフルテキスト インデックスがあります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasCheckCnst
テーブル
テーブルに CHECK 制約があります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasClustIndex
テーブル
テーブルにクラスタ化インデックスがあります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasDefaultCnst
テーブル
テーブルに DEFAULT 制約があります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasDeleteTrigger
テーブル
テーブルに DELETE トリガがあります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasForeignKey
テーブル
テーブルに FOREIGN KEY 制約があります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasForeignRef
テーブル
テーブルは FOREIGN KEY 制約により参照されています。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasIdentity
テーブル
テーブルに ID 列があります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasIndex
テーブル
テーブルに任意の種類のインデックスがあります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasInsertTrigger
テーブル
オブジェクトに INSERT トリガがあります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasNonclustIndex
テーブル
テーブルに非クラスタ化インデックスがあります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasPrimaryKey
テーブル
テーブルに主キーがあります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasRowGuidCol
テーブル
テーブルの uniqueidentifier 列に対して ROWGUIDCOL があります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasTextImage
テーブル
テーブルに text、ntext、または image 列があります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasTimestamp
テーブル
テーブルに timestamp 列があります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasUniqueCnst
テーブル
テーブルに UNIQUE 制約があります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasUpdateTrigger
テーブル
オブジェクトに UPDATE トリガがあります。
1 = TRUE
0 = FALSE
基本データ型: int
TableHasVarDecimalStorageFormat
テーブル
テーブルで vardecimal ストレージ形式が有効になっています。
1 = TRUE
0 = FALSE
TableInsertTrigger
テーブル
テーブルに INSERT トリガがあります。
>1 = 指定された種類の最初のトリガの ID
基本データ型: int
TableInsertTriggerCount
テーブル
テーブルに、指定された数の INSERT トリガがあります。
>0 = INSERT トリガの数
基本データ型: int
TableIsFake
テーブル
テーブルは実在せず、データベース エンジンによって、要求時に実際の領域が内部で確保されます。
1 = TRUE
0 = FALSE
基本データ型: int
TableIsLockedOnBulkLoad
テーブル
テーブルは bcp または BULK INSERT ジョブによりロックされています。
1 = TRUE
0 = FALSE
基本データ型: int
TableIsPinned
テーブル
テーブルは固定され、データ キャッシュに確保されています。
0 = FALSE
この機能は SQL Server 2005 以降のバージョンではサポートされていません。
TableTextInRowLimit
テーブル
テーブルに text in row オプション セットがあります。
> 0 = text in row に許可されている最大バイト数
0 = text in row オプションは設定されていない
基本データ型: int
TableUpdateTrigger
テーブル
テーブルに UPDATE トリガがあります。
>1 = 指定された種類の最初のトリガの ID
基本データ型: int
TableUpdateTriggerCount
テーブル
テーブルに、指定された数の UPDATE トリガがあります。
> 0 = UPDATE トリガの数
基本データ型: int
UserDataAccess
関数、ビュー
SQL Server のローカル インスタンス内にある、ユーザー データやユーザー テーブルへ、オブジェクトがアクセスします。
1 = 読み取り
0 = なし
基本データ型: int
TableHasColumnSet
テーブル
テーブルに列セットがあります。
0 = FALSE
1 = TRUE
詳細については、「列セットの使用」を参照してください。
戻り値の型
sql_variant
例外
エラーが発生した場合、または呼び出し元にオブジェクトの表示権限がない場合は、NULL が返されます。
ユーザーが所有しているか、または権限を与えられている、セキュリティ保護可能なリソースのメタデータのみを表示できます。つまり、オブジェクトに対する権限がユーザーに与えられていない場合、メタデータを生成する組み込み関数 (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