適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric の SQL データベース
現在のデータベース内のスキーマ スコープ オブジェクトに関する情報を返します。 スキーマ スコープ オブジェクトの一覧については、「sys.objects (Transact-SQL)」をご覧ください。 データ定義言語 (DDL) トリガーやイベント通知など、スキーマ スコープ オブジェクト以外のオブジェクトについては、この関数を使用できません。
構文
OBJECTPROPERTY ( ID , property )
引数
身分証明書
現在のデータベース内のオブジェクトの ID を表す式。 ID は int であり、現在のデータベース コンテキストではスキーマ スコープ オブジェクトであると見なされます。
property
ID で指定されたオブジェクトに対して返される情報を表す式。プロパティには、次のいずれかの値を指定できます。
Note
特に明記されていない限り、プロパティが有効なNULL名でない場合、ID が有効なオブジェクト ID ではない場合、ID が指定されたプロパティに対してサポートされていないオブジェクトの種類である場合、または呼び出し元にオブジェクトのメタデータを表示する権限がない場合、が返されます。
| プロパティ名 | オブジェクトの種類 | 説明と戻り値 |
|---|---|---|
CnstIsClustKey |
制約 |
PRIMARY KEY 制約とクラスター化インデックス。1 = 真 0 = 偽 |
CnstIsColumn |
制約 |
CHECK、 DEFAULT、または 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 NULLSがONされると、NULL値に対するすべての比較がUNKNOWN評価されます。 この設定は、テーブルが存在する限り、計算列や制約をはじめとするテーブル定義内のすべての式に適用されます。1 = 真 0 = 偽 |
IsCheckCnst |
任意のスキーマ スコープ オブジェクト |
CHECK 制約。1 = 真 0 = 偽 |
IsConstraint |
任意のスキーマ スコープ オブジェクト | 列またはテーブルの単一の列 CHECK、 DEFAULT、または 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 = ON0 = 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 |
テーブル | テーブルには、text、ntext、または 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 のプロパティ値を返そうとします。 ビュー 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 オプションは、テーブルの作成時にオプションがONに設定されている場合でも、常にテーブルのメタデータにOFFとして格納されます。 したがって、 OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') は常に 1 (true) の値を返します。
例
A. オブジェクトがテーブルであることを確認する
次の例では、UnitMeasure が AdventureWorks2025 データベースのテーブルかどうかをテストします。
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.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