次の方法で共有


OBJECTPROPERTY(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

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

Transact-SQL 構文表記規則

構文

OBJECTPROPERTY ( ID , property )

引数

身分証明書

現在のデータベース内のオブジェクトの ID を表す式。 IDint であり、現在のデータベース コンテキストではスキーマ スコープ オブジェクトであると見なされます。

property

ID で指定されたオブジェクトに対して返される情報を表す式。プロパティには、次のいずれかの値を指定できます。

Note

特に明記されていない限り、プロパティが有効なNULL名でない場合、ID が有効なオブジェクト ID ではない場合、ID が指定されたプロパティに対してサポートされていないオブジェクトの種類である場合、または呼び出し元にオブジェクトのメタデータを表示する権限がない場合、が返されます。

プロパティ名 オブジェクトの種類 説明と戻り値
CnstIsClustKey 制約 PRIMARY KEY 制約とクラスター化インデックス。

1 = 真

0 = 偽
CnstIsColumn 制約 CHECKDEFAULT、または 1 つの列に対する制約を FOREIGN KEY します。

1 = 真

0 = 偽
CnstIsDeleteCascade 制約 FOREIGN KEY 制約を ON DELETE CASCADE オプションで指定します。

1 = 真

0 = 偽
CnstIsDisabled 制約 制約の無効化。

1 = 真

0 = 偽
CnstIsNonclustKey 制約 PRIMARY KEY または非クラスター化インデックスを持つ制約を UNIQUE します。

1 = 真

0 = 偽
CnstIsNotRepl 制約 制約は、 NOT FOR REPLICATION キーワードを使用して定義されます。

1 = 真

0 = 偽
CnstIsNotTrusted 制約 既存の行をチェックせずに制約が有効になりました。したがって、制約はすべての行に対して保持されない場合があります。

1 = 真

0 = 偽
CnstIsUpdateCascade 制約 FOREIGN KEY 制約を ON UPDATE CASCADE オプションで指定します。

1 = 真

0 = 偽
ExecIsAfterTrigger トリガー AFTER トリガー。

1 = 真

0 = 偽
ExecIsAnsiNullsOn Transact-SQL 関数、Transact-SQL プロシージャ、Transact-SQL トリガー、ビュー 作成時の ANSI_NULLS の設定。

1 = 真

0 = 偽
ExecIsDeleteTrigger トリガー DELETE トリガー。

1 = 真

0 = 偽
ExecIsFirstDeleteTrigger トリガー テーブルに対して DELETE が実行されたときに発生する最初のトリガー。

1 = 真

0 = 偽
ExecIsFirstInsertTrigger トリガー テーブルに対して INSERT が実行されたときに発生する最初のトリガー。

1 = 真

0 = 偽
ExecIsFirstUpdateTrigger トリガー テーブルに対して UPDATE が実行されたときに発生する最初のトリガー。

1 = 真

0 = 偽
ExecIsInsertTrigger トリガー INSERT トリガー。

1 = 真

0 = 偽
ExecIsInsteadOfTrigger トリガー INSTEAD OF トリガー。

1 = 真

0 = 偽
ExecIsLastDeleteTrigger トリガー テーブルに対して DELETE が実行されたときに発生した最後のトリガー。

1 = 真

0 = 偽
ExecIsLastInsertTrigger トリガー テーブルに対して INSERT が実行されたときに発生した最後のトリガー。

1 = 真

0 = 偽
ExecIsLastUpdateTrigger トリガー テーブルに対して UPDATE が実行されたときに発生した最後のトリガー。

1 = 真

0 = 偽
ExecIsQuotedIdentOn Transact-SQL 関数、Transact-SQL プロシージャ、Transact-SQL トリガー、ビュー 作成時の QUOTED_IDENTIFIER の設定。

1 = 真

0 = 偽
ExecIsStartup 手順 スタートアップ プロシージャ。

1 = 真

0 = 偽
ExecIsTriggerDisabled トリガー トリガーの無効化。

1 = 真

0 = 偽
ExecIsTriggerNotForRepl トリガー NOT FOR REPLICATIONとして定義されたトリガー。

1 = 真

0 = 偽
ExecIsUpdateTrigger トリガー UPDATE トリガー。

1 = 真

0 = 偽
ExecIsWithNativeCompilation Transact-SQL プロシージャ 適用対象: SQL Server 2014 (12.x) 以降のバージョン。

プロシージャはネイティブでコンパイルされます。

1 = 真

0 = 偽

基本データ型: int
HasAfterTrigger テーブルまたはビュー テーブルまたはビューには、 AFTER トリガーがあります。

1 = 真

0 = 偽
HasDeleteTrigger テーブルまたはビュー テーブルまたはビューには、 DELETE トリガーがあります。

1 = 真

0 = 偽
HasInsertTrigger テーブルまたはビュー テーブルまたはビューには、 INSERT トリガーがあります。

1 = 真

0 = 偽
HasInsteadOfTrigger テーブルまたはビュー テーブルまたはビューには、 INSTEAD OF トリガーがあります。

1 = 真

0 = 偽
HasUpdateTrigger テーブルまたはビュー テーブルまたはビューには、 UPDATE トリガーがあります。

1 = 真

0 = 偽
IsAnsiNullsOn Transact-SQL 関数、Transact-SQL プロシージャ、テーブル、Transact-SQL トリガー、ビュー テーブルの ANSI NULLS オプション設定が ONされることを指定します。 ANSI NULLSONされると、NULL値に対するすべての比較がUNKNOWN評価されます。 この設定は、テーブルが存在する限り、計算列や制約をはじめとするテーブル定義内のすべての式に適用されます。

1 = 真

0 = 偽
IsCheckCnst 任意のスキーマ スコープ オブジェクト CHECK 制約。

1 = 真

0 = 偽
IsConstraint 任意のスキーマ スコープ オブジェクト 列またはテーブルの単一の列 CHECKDEFAULT、または FOREIGN KEY 制約です。

1 = 真

0 = 偽
IsDefault 任意のスキーマ スコープ オブジェクト 適用対象: SQL Server 2008 (10.0.x) 以降のバージョン。

既定のバインド。

1 = 真

0 = 偽
IsDefaultCnst 任意のスキーマ スコープ オブジェクト DEFAULT 制約。

1 = 真

0 = 偽
IsDeterministic 関数またはビュー 関数またはビューの決定性を示すプロパティ。

1 = 決定的

0 = 非決定的
IsEncrypted Transact-SQL 関数、Transact-SQL プロシージャ、テーブル、Transact-SQL トリガー、ビュー モジュール ステートメントの元のテキストが、暗号化した形式に変換されたことを示します。 暗号化した形式の出力は、SQL Server 2005 (9.x) 内のどのカタログ ビューでも直接見ることはできません。 システム テーブルまたはデータベース ファイルへのアクセス権を持たないユーザーは、暗号化した形式のテキストを取得できません。 ただし、データベース 管理者の診断接続 を介してシステム テーブルにアクセスしたり、データベース ファイルに直接アクセスしたりできるユーザーは、テキストを使用できます。 また、サーバー プロセスにデバッガーをアタッチできるユーザーは、実行時、元のプロシージャをメモリから取得できます。

1 = 暗号化

0 = 暗号化なし

基本データ型: int
IsExecuted 任意のスキーマ スコープ オブジェクト オブジェクトが実行可能かどうかを示します (ビュー、プロシージャ、関数、またはトリガー)。

1 = 真

0 = 偽
IsExtendedProc 任意のスキーマ スコープ オブジェクト 拡張プロシージャ。

1 = 真

0 = 偽
IsForeignKey 任意のスキーマ スコープ オブジェクト FOREIGN KEY 制約。

1 = 真

0 = 偽
IsIndexed テーブルまたはビュー インデックス付きのテーブルまたはビュー。

1 = 真

0 = 偽
IsIndexable テーブルまたはビュー インデックスを作成できるテーブルまたはビュー。

1 = 真

0 = 偽
IsInlineFunction 機能 インライン関数。

1 = インライン関数

0 = インライン関数ではない
IsMSShipped 任意のスキーマ スコープ オブジェクト SQL Server のインストール時に作成されたオブジェクト。

1 = 真

0 = 偽
IsPrimaryKey 任意のスキーマ スコープ オブジェクト PRIMARY KEY 制約。

1 = 真

0 = 偽

NULL = 関数ではないか、オブジェクト ID が無効です。
IsProcedure 任意のスキーマ スコープ オブジェクト プロシージャ。

1 = 真

0 = 偽
IsQuotedIdentOn Transact-SQL 関数、Transact-SQL プロシージャ、テーブル、Transact-SQL トリガー、ビュー、 CHECK 制約、 DEFAULT 定義 オブジェクトの引用符で囲まれた識別子の設定が ONされることを指定します。 オブジェクト定義に含まれるすべての式の中で、識別子は二重引用符で区切られます。

1 = ON

0 = OFF
IsQueue 任意のスキーマ スコープ オブジェクト Service Broker キュー

1 = 真

0 = 偽
IsReplProc 任意のスキーマ スコープ オブジェクト レプリケーション プロシージャ。

1 = 真

0 = 偽
IsRule 任意のスキーマ スコープ オブジェクト ルールのバインド。

1 = 真

0 = 偽
IsScalarFunction 機能 スカラー値関数。

1 = スカラー値関数

0 = スカラー値関数ではない
IsSchemaBound 関数またはビュー SCHEMABINDINGを使用して作成されたスキーマ バインド関数またはビュー。

1 = スキーマ バインド

0 = 非スキーマ バインド
IsSystemTable テーブル システム テーブル。

1 = 真

0 = 偽
IsSystemVerified Object SQL Server では、オブジェクトの決定性のプロパティと有効桁数のプロパティを確認できます。

1 = 真

0 = 偽
IsTable テーブル テーブル。

1 = 真

0 = 偽
IsTableFunction 機能 テーブル値関数。

1 = テーブル値関数

0 = テーブル値関数ではない
IsTrigger 任意のスキーマ スコープ オブジェクト トリガー。

1 = 真

0 = 偽
IsUniqueCnst 任意のスキーマ スコープ オブジェクト UNIQUE 制約。

1 = 真

0 = 偽
IsUserTable テーブル ユーザー定義テーブル。

1 = 真

0 = 偽
IsView View ビュー。

1 = 真

0 = 偽
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 = 真

0 = 偽
TableFulltextCatalogId テーブル 適用対象: SQL Server 2008 (10.0.x) 以降のバージョン。

テーブルのフルテキスト インデックス データが存在する、フルテキスト カタログの ID。

0 以外 = フルテキスト インデックス テーブル内の行を識別する一意なインデックスに関連付けられた、フルテキスト カタログ ID。

0 = テーブルにフルテキスト インデックスはない。
TableFulltextChangeTrackingOn テーブル 適用対象: SQL Server 2008 (10.0.x) 以降のバージョン。

テーブルでは、フルテキストの変更の追跡が有効になっています。

1 = 真

0 = 偽
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 = 真

0 = 偽
TableHasCheckCnst テーブル テーブルには CHECK 制約があります。

1 = 真

0 = 偽
TableHasClustIndex テーブル テーブルにクラスター化インデックスがあります。

1 = 真

0 = 偽
TableHasDefaultCnst テーブル テーブルには DEFAULT 制約があります。

1 = 真

0 = 偽
TableHasDeleteTrigger テーブル テーブルには、 DELETE トリガーがあります。

1 = 真

0 = 偽
TableHasForeignKey テーブル テーブルには FOREIGN KEY 制約があります。

1 = 真

0 = 偽
TableHasForeignRef テーブル テーブルは、 FOREIGN KEY 制約によって参照されます。

1 = 真

0 = 偽
TableHasIdentity テーブル テーブルに ID 列があります。

1 = 真

0 = 偽
TableHasIndex テーブル テーブルに任意の種類のインデックスがあります。

1 = 真

0 = 偽
TableHasInsertTrigger テーブル オブジェクトには、 INSERT トリガーがあります。

1 = 真

0 = 偽
TableHasNonclustIndex テーブル テーブルには非クラスター化インデックスがあります。

1 = 真

0 = 偽
TableHasPrimaryKey テーブル テーブルに主キーがあります。

1 = 真

0 = 偽
TableHasRowGuidCol テーブル テーブルには、ROWGUIDCOL 列のがあります。

1 = 真

0 = 偽
TableHasTextImage テーブル テーブルには、textntext、または image 列があります。

1 = 真

0 = 偽
TableHasTimestamp テーブル テーブルには、timestamp 列があります。

1 = 真

0 = 偽
TableHasUniqueCnst テーブル テーブルには UNIQUE 制約があります。

1 = 真

0 = 偽
TableHasUpdateTrigger テーブル オブジェクトには、 UPDATE トリガーがあります。

1 = 真

0 = 偽
TableHasVarDecimalStorageFormat テーブル テーブルで vardecimal ストレージ形式が有効になっています。

1 = 真

0 = 偽
TableInsertTrigger テーブル テーブルには、 INSERT トリガーがあります。

>1 = 指定された種類の最初のトリガーの ID。
TableInsertTriggerCount テーブル テーブルには、指定した数の INSERT トリガーがあります。

>0 = INSERT トリガーの数。
TableIsFake テーブル テーブルは実在せず、 SQL Server データベース エンジンによって、要求時に実際の領域が内部で確保されます。

1 = 真

0 = 偽
TableIsLockedOnBulkLoad テーブル bcp またはBULK INSERT ジョブが原因でテーブルがロックされている。

1 = 真

0 = 偽
TableIsMemoryOptimized テーブル 適用対象: SQL Server 2014 (12.x) 以降のバージョン。

テーブルはメモリ最適化されています

1 = 真

0 = 偽

基本データ型: int

詳細については、「 In-Memory OLTP の概要と使用シナリオ」を参照してください。
TableIsPinned テーブル テーブルは固定され、データ キャッシュに確保されています。

0 = 偽

この機能は、SQL Server 2005 (9.x) 以降のバージョンではサポートされていません。
TableTextInRowLimit テーブル text in row に許可されている最大バイト数。

text in row オプションが設定されていない場合は 0 です。
TableUpdateTrigger テーブル テーブルには、 UPDATE トリガーがあります。

> 1 = 指定された種類の最初のトリガーの ID。
TableUpdateTriggerCount テーブル テーブルには、指定した数の UPDATE トリガーがあります。

> 0 = UPDATE トリガーの数。
TableHasColumnSet テーブル テーブルに列セットがあります。

0 = 偽

1 = 真

詳細については、「 列セットの使用」を参照してください。
TableTemporalType テーブル 適用対象: SQL Server 2016 (13.x) 以降のバージョン。

テーブルの種類を指定します。

0 = 非テンポラル テーブル

1 = システムのバージョン情報のテーブルの履歴テーブル

2 = システムのバージョン情報のテンポラル テーブル

戻り値の型

int

例外

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

アクセス許可

ユーザーが所有しているか、または権限を与えられている、セキュリティ保護可能なリソースのメタデータのみを表示できます。 つまり、メタデータを出力する組み込み関数 ( OBJECTPROPERTY など) は、ユーザーがオブジェクトに対するアクセス許可を持っていない場合に NULL を返します。 詳細については、「 メタデータの可視性の構成」を参照してください。

解説

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

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 オプションは、テーブルの作成時にオプションがONに設定されている場合でも、常にテーブルのメタデータにOFFとして格納されます。 したがって、 OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') は常に 1 (true) の値を返します。

A. オブジェクトがテーブルであることを確認する

次の例では、UnitMeasureAdventureWorks2025 データベースのテーブルかどうかをテストします。

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. スカラー値のユーザー定義関数が決定論的であることを確認する

次の例では、ufnGetProductDealerPrice 値を返すユーザー定義のスカラー値関数である が決定的であるかどうかをテストします。

USE AdventureWorks2022;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO

結果セットは、ufnGetProductDealerPrice が決定論的関数でないことを示しています。

-----
0

C: 特定のスキーマに属するテーブルを検索する

次の例では、 dbo スキーマ内のすべてのテーブルを返します。

-- Uses AdventureWorks

SELECT schema_name(o.schema_id), o.name, o.object_id, o.type_desc
FROM sys.objects AS o
WHERE OBJECTPROPERTY(o.object_id, N'SchemaId') = SCHEMA_ID(N'dbo')
ORDER BY o.type_desc, o.name;
GO

例: Azure Synapse Analytics、Analytics Platform System (PDW)

D: オブジェクトがテーブルかどうかを確認する

次の例では、dbo.DimResellerAdventureWorksPDW2022 データベースのテーブルかどうかをテストします。

-- Uses AdventureWorks

IF OBJECTPROPERTY (OBJECT_ID(N'dbo.DimReseller'),'ISTABLE') = 1
   SELECT 'DimReseller is a table.'
ELSE
   SELECT 'DimReseller is not a table.';
GO