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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure даAzure Synapse Analytics (хранилище данных SQL) даParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel 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-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

OBJECT_NAME ( object_id [, database_id ] )  

АргументыArguments

object_idobject_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
Идентификатор базы данных, где будет выполняться поиск объекта.Is the ID of the database where the object is to be looked up. Аргумент database_id имеет тип int.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. Чтобы указать идентификатор базы данных, также требуется разрешение CONNECT на базу данных или необходимо включить гостевую учетную запись.To specify a database ID, CONNECT permission to the database is also required, or the guest account must be enabled.

RemarksRemarks

Системные функции можно использовать в списке выбора, в предложении 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 Database EngineSQL Server Database Engine предполагает, что идентификатор object_id находится в контексте текущей базы данных.By default, the Компонент SQL Server Database EngineSQL 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 EngineDatabase Engine пытается возвратить имя объекта для заданного идентификатора объекта в этой базе данных, а не в базе данных, указанной в предложении FROM запроса.The Компонент Database EngineDatabase 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  

Можно разрешать имена объектов в контексте другой базы данных, указав идентификатор базы данных.You can resolve object names in the context of another database by specifying a database ID. Следующий пример указывает идентификатор базы данных для базы данных master в базе данных в функции OBJECT_SCHEMA_NAME и приводит к правильным результатам.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. Использование параметра OBJECT_NAME в предложении WHEREUsing 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. Возвращение имени схемы объекта и имени объекта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. Возвращение трехсоставных имен объекта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)Azure Synapse Analytics (SQL DW) и Параллельное хранилище данныхParallel Data WarehouseExamples: Azure Synapse Analytics (хранилище данных SQL)Azure Synapse Analytics (SQL DW) and Параллельное хранилище данныхParallel Data Warehouse

Г.D. Использование параметра OBJECT_NAME в предложении WHEREUsing 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)