OBJECT_NAME (Transact-SQL)OBJECT_NAME (Transact-SQL)

適用対象:Applies to: ○ SQL ServerSQL Server (サポートされているすべてのバージョン)yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance yesAzure Synapse Analytics うんParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: ○ SQL ServerSQL Server (サポートされているすべてのバージョン)yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance yesAzure Synapse Analytics うんParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

スキーマ スコープ オブジェクトのデータベース オブジェクト名を返します。Returns the database object name for schema-scoped objects. スキーマ スコープ オブジェクトの一覧については、「sys.objects (Transact-SQL)」をご覧ください。For a list of schema-scoped objects, see sys.objects (Transact-SQL).

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

構文Syntax

OBJECT_NAME ( object_id [, database_id ] )  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

object_idobject_id
使用するオブジェクトの ID です。Is the ID of the object to be used. object_id のデータ型は int です。指定したデータベース コンテキスト、または現在のデータベース コンテキストのスキーマ スコープ オブジェクトと見なされます。object_id is int and is assumed to be a schema-scoped object in the specified database, or in the current database context.

database_iddatabase_id
オブジェクトを検索するデータベースの ID を指定します。Is the ID of the database where the object is to be looked up. database_idint です。database_id is int.

戻り値の型Return Types

sysnamesysname

例外Exceptions

エラーが発生した場合、または呼び出し元にオブジェクトの表示権限がない場合は、NULL が返されます。Returns NULL on error or if a caller does not have permission to view the object. 呼び出し先データベースの AUTO_CLOSE オプションが ON に設定されている場合、データベースが開きます。If the target database has the AUTO_CLOSE option set to ON, the function will open the database.

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

アクセス許可Permissions

オブジェクトに対する ANY 権限が必要です。Requires ANY permission on the object. データベース ID を指定するには、そのデータベースの CONNECT 権限を持っているか、ゲスト アカウントが有効である必要があります。To specify a database ID, CONNECT permission to the database is also required, or the guest account must be enabled.

解説Remarks

システム関数は、選択リストの中、WHERE 句の中、また、式を使える所ならどこにでも使用できます。System functions can be used in the select list, in the WHERE clause, and anywhere an expression is allowed. 詳しくは、「」および「WHERE」をご覧ください。For more information, see Expressions and WHERE.

このシステム関数が返す値には、現在のデータベースの照合順序が使用されます。The value returned by this system function uses the collation of the current database.

既定では、SQL Server データベース エンジンSQL Server Database Engineobject_id が現在のデータベース コンテキストにあるものと見なします。By default, the SQL Server データベース エンジンSQL Server Database Engine assumes that object_id is in the context of the current database. 別のデータベースの object_id を参照するクエリは、NULL または正しくない値を返します。A query that references an object_id in another database returns NULL or incorrect results. たとえば、次のクエリでは、現在のデータベースのコンテキストは AdventureWorks2012AdventureWorks2012 です。For example, in the following query the context of the current database is AdventureWorks2012AdventureWorks2012. データベース エンジンDatabase Engineは、クエリの FROM 句に指定されたデータベースではなく、このデータベースの指定されたオブジェクト ID のオブジェクト名を返します。The データベース エンジンDatabase Engine tries to return an object name for the specified object ID in that database instead of the database specified in the FROM clause of the query. したがって、正しくない情報が返されます。Therefore, incorrect information is returned.

USE AdventureWorks2012;  
GO  
SELECT DISTINCT OBJECT_NAME(object_id)  
FROM master.sys.objects;  
GO  

データベース ID を指定することで、別のデータベースのコンテキストにあるオブジェクト名を解決できます。You can resolve object names in the context of another database by specifying a database ID. 次の例では、master 関数で OBJECT_SCHEMA_NAME データベースのデータベース ID を指定し、正確な結果を返します。The following example specifies the database ID for the master database in the OBJECT_SCHEMA_NAME function and returns the correct results.

USE AdventureWorks2012;  
GO  
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name  
FROM master.sys.objects;  
GO  

Examples

A.A. WHERE 句で OBJECT_NAME を使用するUsing OBJECT_NAME in a WHERE clause

この例では、sys.objects ステートメントの OBJECT_NAME 句の WHERE で指定されたオブジェクトの SELECT カタログ ビューから列を返します。The following example returns columns from the sys.objects catalog view for the object specified by OBJECT_NAME in the WHERE clause of the SELECT statement.

USE AdventureWorks2012;  
GO  
DECLARE @MyID INT;  
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2012.Production.Product',  
    'U'));  
SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(@MyID);  
GO  

B.B. オブジェクト スキーマ名とオブジェクト名を取得するReturning the object schema name and object name

この例では、アドホック ステートメントでも準備されたステートメントでもない、キャッシュされたすべてのクエリ プランについて、オブジェクト スキーマ名、オブジェクト名、SQL テキストを返します。The following example returns the object schema name, object name, and SQL text for all cached query plans that are not ad hoc or prepared statements.

SELECT DB_NAME(st.dbid) AS database_name,   
    OBJECT_SCHEMA_NAME(st.objectid, st.dbid) AS schema_name,  
    OBJECT_NAME(st.objectid, st.dbid) AS object_name,   
    st.text AS query_text  
FROM sys.dm_exec_query_stats AS qs  
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st  
WHERE st.objectid IS NOT NULL;  
GO  

C.C. 3 つの要素で構成されたオブジェクト名を取得するReturning three-part object names

この例では、データベース名、スキーマ名、およびオブジェクト名と共に、すべてのデータベースのすべてのオブジェクトの統計を示す sys.dm_db_index_operational_stats 動的管理ビューの残りのすべての列を返します。The following example returns the database, schema, and object name along with all other columns in the sys.dm_db_index_operational_stats dynamic management view for all objects in all databases.

SELECT QUOTENAME(DB_NAME(database_id))   
    + N'.'   
    + QUOTENAME(OBJECT_SCHEMA_NAME(object_id, database_id))   
    + N'.'   
    + QUOTENAME(OBJECT_NAME(object_id, database_id))  
    , *   
FROM sys.dm_db_index_operational_stats(NULL, NULL, NULL, NULL);  
GO  

例: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse)Parallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) and Parallel Data WarehouseParallel Data Warehouse

D.D. WHERE 句で OBJECT_NAME を使用するUsing OBJECT_NAME in a WHERE clause

この例では、sys.objects ステートメントの OBJECT_NAME 句の WHERE で指定されたオブジェクトの SELECT カタログ ビューから列を返します。The following example returns columns from the sys.objects catalog view for the object specified by OBJECT_NAME in the WHERE clause of the SELECT statement. (実際のオブジェクト番号 (次の例では 274100017) は異なります。(Your object number (274100017 in the example below) will be different. この例をテストするには、お使いのデータベースで SELECT name, object_id FROM sys.objects; を実行して、有効なオブジェクト番号を調べてください。)To test this example, look up a valid object number by executing SELECT name, object_id FROM sys.objects; in your database.)

SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(274100017);  

参照See Also

メタデータ関数 (Transact-SQL) Metadata Functions (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL) OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)OBJECT_ID (Transact-SQL)