OBJECT_ID (Transact-SQL)
適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
スキーマ スコープ オブジェクトのデータベース オブジェクト ID 番号を返します。
スキーマ スコープではないオブジェクト (データ定義言語 (DDL) トリガーなど) を使用 OBJECT_ID
してクエリを実行することはできません。 sys.objects カタログ ビューに見つからないオブジェクトの場合は、適切なカタログ ビューに対してクエリを実行して、オブジェクト識別番号を取得します。 たとえば、DDL トリガーのオブジェクト ID 番号を取得するには、SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'
を使用します。
構文
OBJECT_ID ( ' [ database_name . [ schema_name ] . | schema_name . ]
object_name' [ , 'object_type' ] )
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
N'object_name'
使用するオブジェクトです。 object_name は varchar または nvarchar です。 object_nameの varchar 値は暗黙的に nvarchar に変換されます。 データベース名とスキーマ名の指定は省略可能です。
N'object_type'
スキーマ スコープのオブジェクト型。 object_type は varchar または nvarchar です。 object_typeの varchar 値は暗黙的に nvarchar に変換されます。 オブジェクトの種類の一覧については、「sys.objects (Transact-SQL)」の type 列を参照してください。
戻り値の型
int
例外
空間インデックスの場合は、 OBJECT_ID
を返します NULL
。
エラー時に返されます NULL
。
ユーザーは、ユーザーが所有しているセキュリティ保護可能なリソース、またはユーザーにアクセス許可が付与されているセキュリティ保護可能なリソースのメタデータのみを表示できます。 つまり、メタデータを出力する組み込み関数 OBJECT_ID
は、ユーザーがオブジェクトに対する権限を持っていない場合に返される NULL
可能性があります。 詳細については、「 Metadata Visibility Configuration」を参照してください。
解説
システム関数へのパラメーターが省略可能の場合は、現在のデータベース、ホスト コンピューター、サーバー ユーザー、またはデータベース ユーザーが推測されます。 組み込み関数は常にかっこで囲んで従う必要があります。
一時テーブル名を指定する場合、データベース名は、現在 tempdb
のデータベースが指定されていない限り、一時テーブル名の前に指定する必要があります。 次に例を示します。
SELECT OBJECT_ID('tempdb..#mytemptable');
システム関数は、選択リスト、句、および式が WHERE
許可されている任意の場所で使用できます。 詳しくは、「式 (Transact-SQL)」および「WHERE (Transact-SQL)」をご覧ください。
例
この記事の Transact-SQL コード サンプルでは、Microsoft SQL Server サンプルとコミュニティ プロジェクトのホーム ページからダウンロードできるサンプル データベースを使用AdventureWorks2022
します。
A. 指定したオブジェクトのオブジェクト ID を返します
次の例では、AdventureWorks2022
データベース内の Production.WorkOrder
テーブルのオブジェクト ID を返します。
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO
B. オブジェクトが存在することを確認する
次の例では、指定したテーブルにオブジェクト ID があることを確認して、テーブルが存在するかどうかをチェックします。 テーブルが存在する場合は、削除されます。 テーブルが存在しない場合、 DROP TABLE
ステートメントは実行されません。
USE AdventureWorks2022;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO
C: OBJECT_IDを使用してシステム関数パラメーターの値を指定する
次の例では、AdventureWorks2022
データベース内にある Person.Address
テーブルのすべてのインデックスとパーティションについて、sys.dm_db_index_operational_stats 関数を使用して情報を返しています。
Note
この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
Transact-SQL 関数 DB_ID
を使用して OBJECT_ID
パラメーター値を返す場合は、常に有効な ID が返されることを確認してください。 データベース名またはオブジェクト名が見つからない場合 (存在しない場合やスペルが正しくない場合など)、両方の関数が返されます NULL
。 この関数はsys.dm_db_index_operational_stats
、NULL
すべてのデータベースまたはすべてのオブジェクトを指定するワイルドカード値として解釈されます。 この操作は意図しない可能性があるため、このセクションの例では、データベース ID とオブジェクト ID を安全に判断する方法を示します。
DECLARE @db_id INT;
DECLARE @object_id INT;
SET @db_id = DB_ID(N'AdventureWorks2022');
SET @object_id = OBJECT_ID(N'AdventureWorks2022.Person.Address');
IF @db_id IS NULL
BEGIN
PRINT N'Invalid database';
END;
ELSE IF @object_id IS NULL
BEGIN
PRINT N'Invalid object';
END;
ELSE
BEGIN
SELECT *
FROM [sys].dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
END;
GO
例: Azure Synapse Analytics、Analytics Platform System (PDW)
D. 指定したオブジェクトのオブジェクト ID を返します
次の例では、AdventureWorksPDW2022 データベース内の FactFinance
テーブルのオブジェクト ID が返されます。
SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示