OBJECT_ID (Transact-SQL)OBJECT_ID (Transact-SQL)

適用対象: ○SQL Server (2008 以降)○Azure SQL Database○Azure SQL Data Warehouse ○Parallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

スキーマ スコープ オブジェクトのデータベース オブジェクト ID 番号を返します。Returns the database object identification number of a schema-scoped object.


DDL トリガーなど、スキーマ スコープ オブジェクトでないオブジェクトは、OBJECT_ID を使用して照会できません。Objects that are not schema-scoped, such as DDL triggers, cannot be queried by using OBJECT_ID. ないオブジェクトに対して、 sys.objectsカタログ ビューには、適切なカタログ ビューをクエリすることによって、オブジェクト id 番号を取得します。For objects that are not found in the sys.objects catalog view, obtain the object identification numbers by querying the appropriate catalog view. たとえば、DDL トリガーのオブジェクト id 番号を返す、次のように使用します。SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog``'です。For example, to return the object identification number of a DDL trigger, use SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog``'.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions


OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]   
  object_name' [ ,'object_type' ] )  


' object_name '' object_name '
使用するオブジェクトを指定します。Is the object to be used. object_namevarcharまたはnvarcharです。object_name is either varchar or nvarchar. 場合object_namevarchar、暗黙的に変換されますnvarcharです。If object_name is varchar, it is implicitly converted to nvarchar. データベース名とスキーマ名の指定は省略可能です。Specifying the database and schema names is optional.

' object_type '' object_type '
スキーマ スコープのオブジェクトの種類を指定します。Is the schema-scoped object type. object_typevarcharまたはnvarcharです。object_type is either varchar or nvarchar. 場合object_typevarchar、暗黙的に変換されますnvarcharです。If object_type is varchar, it is implicitly converted to nvarchar. オブジェクトの種類の一覧は、次を参照してください。、内の列sys.objects (です。TRANSACT-SQL と #41 ですFor a list of object types, see the type column in sys.objects (Transact-SQL).

戻り値の型Return Types



空間インデックスに対して、OBJECT_ID は NULL を返します。For a spatial index, OBJECT_ID returns NULL.

エラーが発生した場合は NULL を返します。Returns NULL on error.

ユーザーが所有しているか、または権限を与えられている、セキュリティ保護可能なリソースのメタデータのみを表示できます。A user can only view the metadata of securables that the user owns or on which the user has been granted permission. つまり、オブジェクトに対する権限がユーザーに与えられていない場合、メタデータを生成する組み込み関数 (OBJECT_ID など) が NULL を返す可能性があります。This means that metadata-emitting, built-in functions such as OBJECT_ID may return NULL if the user does not have any permission on the object. 詳細については、「 Metadata Visibility Configuration」を参照してください。For more information, see Metadata Visibility Configuration.


システム関数のパラメーターを指定しない場合は、現在のデータベース、ホスト コンピューター、サーバー ユーザー、またはデータベース ユーザーを指定したと見なされます。When the parameter to a system function is optional, the current database, host computer, server user, or database user is assumed. 組み込み関数の後には、必ずかっこが必要です。Built-in functions must always be followed by parentheses.

一時テーブル名を指定すると、データベース名でなければなりません一時テーブル名の前に、現在のデータベースがない限り、 tempdbです。When a temporary table name is specified, the database name must come before the temporary table name, unless the current database is tempdb. たとえば、 SELECT OBJECT_ID('tempdb..#mytemptable')のようにします。For example: SELECT OBJECT_ID('tempdb..#mytemptable').

システム関数は、選択リストの中、WHERE 句の中、また、式を使える所ならどこにでも使用できます。System functions can be used in the select list, in the WHERE clause, and anywhere an expression is allowed. 詳細については、次を参照してください。式 (です。TRANSACT-SQL と #41 です。場所 (です。TRANSACT-SQL と #41 ですFor more information, see Expressions (Transact-SQL) and WHERE (Transact-SQL).


A.A. 指定したオブジェクトのオブジェクト ID を返すReturning the object ID for a specified object

次の例では、 AdventureWorks2012AdventureWorks2012 データベース内の Production.WorkOrder テーブルのオブジェクト ID を返します。The following example returns the object ID for the Production.WorkOrder table in the AdventureWorks2012AdventureWorks2012 database.

USE master;  
SELECT OBJECT_ID(N'AdventureWorks2012.Production.WorkOrder') AS 'Object ID';  

B.B. オブジェクトが存在することを確認するVerifying that an object exists

次の例では、指定したテーブルにオブジェクト ID があることを確認して、テーブルが存在するかどうかをチェックします。The following example checks for the existence of a specified table by verifying that the table has an object ID. テーブルが存在する場合は、削除されます。If the table exists, it is deleted. テーブルが存在しない場合、DROP TABLE ステートメントは実行されません。If the table does not exist, the DROP TABLE statement is not executed.

USE AdventureWorks2012;  
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL  
DROP TABLE dbo.AWBuildVersion;  

C.C. OBJECT_ID を使用して、システム関数パラメーターの値を指定するUsing OBJECT_ID to specify the value of a system function parameter

次の例は、すべてのインデックスとパーティションの情報を返します、Person.Addressテーブルに、 AdventureWorks2012AdventureWorks2012データベースを使用して、 sys.dm_db_index_operational_stats関数。The following example returns information for all indexes and partitions of the Person.Address table in the AdventureWorks2012AdventureWorks2012 database by using the sys.dm_db_index_operational_stats function.


使用する場合、 Transact-SQLTransact-SQL関数 DB_ID および OBJECT_ID が、パラメーター値を返すは常に有効な ID が返されることを確認してください。When you are using the Transact-SQLTransact-SQL functions DB_ID and OBJECT_ID to return a parameter value, always make sure that a valid ID is returned. データベースまたはオブジェクト名が存在しないか、スペルが間違っていることが原因で見つからない場合は、両方の関数で NULL が返されます。If the database or object name cannot be found, such as when they do not exist or are spelled incorrectly, both functions will return NULL. Sys.dm_db_index_operational_stats関数は、この値は、すべてのデータベースまたはすべてのオブジェクトを指定するワイルドカード値として NULL を解釈します。The sys.dm_db_index_operational_stats function interprets NULL as a wildcard value that specifies all databases or all objects. これによって意図しない操作が実行される可能性があるので、この例では安全な方法を使用してデータベース ID とオブジェクト ID を特定します。Because this can be an unintentional operation, the examples in this section demonstrate the safe way to determine database and object IDs.

DECLARE @db_id int;  
DECLARE @object_id int;  
SET @db_id = DB_ID(N'AdventureWorks2012');  
SET @object_id = OBJECT_ID(N'AdventureWorks2012.Person.Address');  
IF @db_id IS NULL   
    PRINT N'Invalid database';  
ELSE IF @object_id IS NULL  
    PRINT N'Invalid object';  
    SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);  

例: Azure SQL データ ウェアハウスAzure SQL Data WarehouseParallel Data WarehouseParallel Data WarehouseExamples: Azure SQL データ ウェアハウスAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

D: が指定されたオブジェクトのオブジェクト ID を返すD: Returning the object ID for a specified object

次の例では、 AdventureWorksPDW2012AdventureWorksPDW2012 データベース内の FactFinance テーブルのオブジェクト ID を返します。The following example returns the object ID for the FactFinance table in the AdventureWorksPDW2012AdventureWorksPDW2012 database.

SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';  

参照See Also

メタデータ関数 (です。TRANSACT-SQL と #41 です。 Metadata Functions (Transact-SQL)
sys.objects (です。TRANSACT-SQL と #41 です。 sys.objects (Transact-SQL)
sys.dm_db_index_operational_stats (です。TRANSACT-SQL と #41 です。 sys.dm_db_index_operational_stats (Transact-SQL)