次の方法で共有


OBJECTPROPERTY (Transact-SQL)

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

トピック リンク アイコン Transact-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

    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 = フルテキスト インデックスがマージ中

    TableFullTextBackgroundUpdateIndexOn

    テーブル

    テーブルではフルテキスト インデックスのバックグラウンド更新 (変更の自動追跡) が有効です。

    1 = TRUE

    0 = FALSE

    TableFulltextCatalogId

    テーブル

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

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

    0 = テーブルにフルテキスト インデックスはない

    TableFulltextChangeTrackingOn

    テーブル

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

    1 = TRUE

    0 = FALSE

    TableFulltextDocsProcessed

    テーブル

    フルテキスト インデックス作成の開始以降に処理された行の数。 フルテキスト検索用にインデックスが作成されるテーブルでは、1 行のすべての列が、インデックスが作成される 1 つのドキュメントの一部と見なされます。

    0 = アクティブ クロールまたはフルテキスト インデックス作成は完了していない

    > 0 = 次のいずれか

    • 完全、増分、または手動による変更追跡の作成開始以降、挿入操作や更新操作で処理されたドキュメントの数です。

    • バックグラウンド更新インデックス作成の有効化、フルテキスト インデックス スキーマの変更、フルテキスト カタログの再構築、または SQL Server のインスタンスの再起動などの変更の追跡以降、挿入操作や更新操作で処理された行数です。

    NULL = テーブルにフルテキスト インデックスがありません。

    注意

    このプロパティは、削除された行を監視またはカウントしません。

    TableFulltextFailCount

    テーブル

    フルテキスト検索によるインデックスが設定されなかった行数。

    0 = 作成完了

    > 0 = 次のいずれか

    • 完全、増分、または手動による変更追跡の作成開始以降に、インデックスが作成されなかったドキュメントの数。

    • インデックスのバックグラウンド更新による変更追跡の場合、作成の開始または再開以降にインデックスが作成されなかった行数。 これは、スキーマの変更、カタログの再構築、サーバーの再起動などにより発生する場合があります。

    NULL = テーブルにフルテキスト インデックスはない

    TableFulltextItemCount

    テーブル

    フルテキスト インデックスが正常に設定された行数。

    TableFulltextKeyColumn

    テーブル

    フルテキスト インデックス定義に関係している、一意な単一列インデックスに関連付けられた列の ID。

    0 = テーブルにフルテキスト インデックスはない

    TableFulltextPendingChanges

    テーブル

    変更の追跡が処理されていないエントリ数。

    0 = 変更の追跡は有効でない

    NULL = テーブルにフルテキスト インデックスはない

    TableFulltextPopulateStatus

    テーブル

    0 = アイドル状態

    1 = 全体を作成中

    2 = 増分作成中

    3 = 追跡した変更を伝達中

    4 = 自動変更の追跡など、インデックスのバックグラウンド更新が進行中

    5 = フルテキスト インデックス作成が絞り込みまたは停止された

    TableHasActiveFulltextIndex

    テーブル

    テーブルにアクティブなフルテキスト インデックスがあります。

    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

    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

関連項目

参照

COLUMNPROPERTY (Transact-SQL)

メタデータ関数 (Transact-SQL)

OBJECTPROPERTYEX (Transact-SQL)

ALTER AUTHORIZATION (Transact-SQL)

TYPEPROPERTY (Transact-SQL)

sys.objects (Transact-SQL)