OBJECTPROPERTY (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric のSQL 分析エンドポイント
Microsoft Fabric のウェアハウス
現在のデータベース内のスキーマ スコープ オブジェクトに関する情報を返します。 スキーマ スコープ オブジェクトの一覧については、「sys.objects (Transact-SQL)」をご覧ください。 データ定義言語 (DDL) トリガーやイベント通知など、スキーマ スコープ オブジェクト以外のオブジェクトについては、この関数を使用できません。
構文
OBJECTPROPERTY ( id , property )
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
id
現在のデータベース内のオブジェクトの ID を表す式を指定します。 id のデータ型は int で、現在のデータベース コンテキストでのスキーマ スコープ オブジェクトであることが前提となっています。
property
id で指定されるオブジェクトに対して返される情報を表す式です。property は次のいずれかを指定することができます。
Note
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 |
ExecIsWithNativeCompilation | Transact-SQL プロシージャ | 適用対象: SQL Server 2014 (12.x) 以降。 プロシージャはネイティブでコンパイルされます。 1 = True 0 = False 基本データ型: int |
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 | 任意のスキーマ スコープ オブジェクト | 適用対象: SQL Server 2008 (10.0.x) 以降。 既定のバインド。 1 = True 0 = False |
IsDefaultCnst | 任意のスキーマ スコープ オブジェクト | DEFAULT 制約。 1 = True 0 = False |
IsDeterministic | 関数、ビュー | 関数またはビューの決定性を示すプロパティ。 1 = 決定的 0 = 非決定的 |
IsEncrypted | Transact-SQL 関数、Transact-SQL プロシージャ、テーブル、Transact-SQL トリガー、ビュー | モジュール ステートメントの元のテキストが、暗号化した形式に変換されたことを示します。 暗号化した形式の出力は、SQL Server 2005 (9.x) 内のどのカタログ ビューでも直接見ることはできません。 システム テーブルまたはデータベース ファイルへのアクセス権を持たないユーザーは、暗号化した形式のテキストを取得できません。 ただし、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 |
IsSystemVerified | Object | SQL Server では、オブジェクトの決定性のプロパティと有効桁数のプロパティを確認できます。 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 | View | ビュー。 1 = True 0 = False |
OwnerId | 任意のスキーマ スコープ オブジェクト | オブジェクトの所有者。 注: スキーマ所有者はオブジェクト所有者である必要はありません。 たとえば、子オブジェクト (parent_object_id が NULL でないオブジェクト) では、常に親オブジェクトと同じ所有者 ID が返されます。 NULL 以外 = オブジェクト所有者のデータベース ユーザー ID です。 |
SchemaId | 任意のスキーマ スコープ オブジェクト | オブジェクトが所属するスキーマのスキーマ ID。 |
TableDeleteTrigger | テーブル | テーブルに DELETE トリガーがあります。 >1 = 指定された種類の最初のトリガーの ID。 |
TableDeleteTriggerCount | テーブル | テーブルには指定された数の DELETE トリガーがあります。 >0 = DELETE トリガーの数。 |
TableFullTextMergeStatus | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 現在マージ中のフルテキスト インデックスがテーブルにあるかどうかを示します。 0 = テーブルにフルテキスト インデックスがないか、フルテキスト インデックスがマージ中ではない 1 = フルテキスト インデックスがマージ中。 |
TableFullTextBackgroundUpdateIndexOn | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 テーブルではフルテキスト インデックスのバックグラウンド更新 (変更の自動追跡) が有効です。 1 = TRUE 0 = FALSE |
TableFulltextCatalogId | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 テーブルのフルテキスト インデックス データが存在する、フルテキスト カタログの ID。 0 以外 = フルテキスト インデックス テーブル内の行を識別する一意なインデックスに関連付けられた、フルテキスト カタログ ID。 0 = テーブルにフルテキスト インデックスはない。 |
TableFulltextChangeTrackingOn | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 テーブルでは、フルテキストの変更の追跡が有効になっています。 1 = TRUE 0 = FALSE |
TableFulltextDocsProcessed | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 フルテキスト インデックス作成の開始以降に処理された行の数。 フルテキスト検索用にインデックスが作成されるテーブルでは、1 行のすべての列が、インデックスが作成される 1 つのドキュメントの一部と見なされます。 0 = アクティブ クロールまたはフルテキスト インデックス作成は完了していない。 > 0 = 次のいずれか (A または B): A) 完全、増分、または手動による変更追跡の作成開始以降、挿入操作や更新操作で処理されたドキュメントの数です。 B) バックグラウンド更新インデックス作成の有効化、フルテキスト インデックス スキーマの変更、フルテキスト カタログの再構築、または SQL Server のインスタンスの再起動などの変更の追跡以降、挿入操作や更新操作で処理された行数。 NULL = テーブルにフルテキスト インデックスはない。 このプロパティによって、削除された行の監視またはカウントは行われません。 |
TableFulltextFailCount | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 フルテキスト検索によるインデックスが設定されなかった行数。 0 = 作成完了 > 0 = 次のいずれか (A または B): A) 完全、増分、または手動更新による変更追跡の作成開始以降に、インデックスが作成されなかったドキュメントの数。 B) インデックスのバックグラウンド更新による変更追跡の場合、作成の開始または再開以降にインデックスが作成されなかった行数。 これは、スキーマの変更、カタログの再構築、サーバーの再起動などにより発生する場合があります。 NULL = テーブルにフルテキスト インデックスはない。 |
TableFulltextItemCount | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 フルテキスト インデックスが正常に設定された行数。 |
TableFulltextKeyColumn | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 フルテキスト インデックス定義に関係している、一意な単一列インデックスに関連付けられた列の ID。 0 = テーブルにフルテキスト インデックスはない。 |
TableFulltextPendingChanges | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 変更の追跡が処理されていないエントリ数。 0 = 変更の追跡は有効でない NULL = テーブルにフルテキスト インデックスはない。 |
TableFulltextPopulateStatus | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 0 = アイドル状態 1 = 全体を作成中 2 = 増分作成中 3 = 追跡した変更を伝達中 4 = 自動変更の追跡など、インデックスのバックグラウンド更新が進行中 5 = フルテキスト インデックス作成が絞り込みまたは停止された |
TableHasActiveFulltextIndex | テーブル | 適用対象: SQL Server 2008 (10.0.x) 以降。 テーブルにアクティブなフルテキスト インデックスがあります。 1 = True 0 = False |
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 |
TableIsMemoryOptimized | テーブル | 適用対象: SQL Server 2014 (12.x) 以降。 テーブルはメモリ最適化されています 1 = True 0 = False 基本データ型: int 詳細については、「 インメモリ OLTP (インメモリ最適化)」を参照してください。 |
TableIsPinned | テーブル | テーブルは固定され、データ キャッシュに確保されています。 0 = False この機能は SQL Server 2005 (9.x) 以降ではサポートされていません。 |
TableTextInRowLimit | テーブル | text in row に許可されている最大バイト数。 text in row オプションが設定されていない場合は 0 です。 |
TableUpdateTrigger | テーブル | テーブルに UPDATE トリガーがあります。 > 1 = 指定された種類の最初のトリガーの ID。 |
TableUpdateTriggerCount | テーブル | テーブルには指定された数の UPDATE トリガーがあります。 > 0 = UPDATE トリガーの数。 |
TableHasColumnSet | テーブル | テーブルに列セットがあります。 0 = False 1 = True 詳細については、「 列セットの使用」を参照してください。 |
TableTemporalType | テーブル | 適用対象: SQL Server 2016 (13.x) 以降。 テーブルの種類を指定します。 0 = 非テンポラル テーブル 1 = システムのバージョン情報のテーブルの履歴テーブル 2 = システムのバージョン情報のテンポラル テーブル |
戻り値の型
int
例外
エラーが発生した場合、または呼び出し元にオブジェクトの表示権限がない場合は、NULL が返されます。
アクセス許可
ユーザーが所有しているか、または権限を与えられている、セキュリティ保護可能なリソースのメタデータのみを表示できます。 つまり、オブジェクトに対する権限がユーザーに与えられていない場合、メタデータを生成する組み込み関数 (OBJECTPROPERTY など) が NULL を返す可能性があります。 詳細については、「 Metadata Visibility Configuration」を参照してください。
解説
データベース エンジン を前提としています object_id が現在のデータベース コンテキストでします。 別のデータベースの object_id を参照するクエリは、NULL または正しくない値を返します。 たとえば、次のクエリでは、現在のデータベース コンテキストは master データベースです。 データベース エンジンは、クエリ内で指定されたデータベースではなく、このデータベースの指定された object_id のプロパティ値を返します。 ビュー vEmployee
は master データベース内にないため、このクエリでは正しくない結果が返されます。
USE master;
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks2022.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
が AdventureWorks2022
データベースのテーブルかどうかをテストします。
USE AdventureWorks2022;
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 AdventureWorks2022;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO
結果セットは、ufnGetProductDealerPrice
が決定論的関数でないことを示しています。
-----
0
C: 特定のスキーマに属するテーブルを見つける
次の例は、dbo スキーマのすべてのテーブルを返します。
-- Uses AdventureWorks
SELECT name, object_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'dbo')
ORDER BY type_desc, name;
GO
例: Azure Synapse Analytics、Analytics Platform System (PDW)
D: オブジェクトがテーブルかどうかを確認する
次の例では、dbo.DimReseller
が AdventureWorksPDW2022 データベースのテーブルかどうかをテストします。
-- Uses AdventureWorks
IF OBJECTPROPERTY (OBJECT_ID(N'dbo.DimReseller'),'ISTABLE') = 1
SELECT 'DimReseller is a table.'
ELSE
SELECT 'DimReseller is not a table.';
GO
関連項目
COLUMNPROPERTY (Transact-SQL)
メタデータ関数 (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
sys.objects (Transact-SQL)