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