OBJECT_NAME (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
Retorna o nome de objeto de banco de dados para objetos no escopo do esquema. Para obter uma lista de objetos no escopo do esquema, confira sys.objects (Transact-SQL).
Convenções de sintaxe de Transact-SQL
Sintaxe
OBJECT_NAME ( object_id [, database_id ] )
Argumentos
object_id
É a ID do objeto a ser usado. object_id é int e é considerado um objeto no escopo do esquema no banco de dados especificado ou no contexto de banco de dados atual.
database_id
É a ID do banco de dados onde o objeto deve ser pesquisado. O database_id é int.
Tipos de retorno
sysname
Exceções
Retornará NULL em caso de erro ou se um chamador não tiver permissão para exibir o objeto. Se o banco de dados de destino tiver a opção AUTO_CLOSE definida como ON, a função abrirá o banco de dados.
Um usuário só pode exibir metadados de protegíveis de sua propriedade ou para os quais recebeu permissão. Isso significa que as funções internas que emitem metadados, como OBJECT_NAME, poderão retornar NULL se o usuário não tiver nenhuma permissão no objeto. Para obter mais informações, consulte Metadata Visibility Configuration.
Permissões
Requer permissão ANY para o objeto. Para especificar uma identificação de banco de dados, é exigida também a permissão CONNECT para o banco de dados ou a conta de convidado deve ser habilitada.
Comentários
As funções de sistema podem ser usadas na lista de seleção, na cláusula WHERE e em qualquer local onde uma expressão for permitida. Para obter mais informações, consulte Expressões e WHERE.
O valor retornado por esta função de sistema usa a ordenação do banco de dados atual.
Por padrão, o Mecanismo de Banco de Dados do SQL Server considera que object_id está no contexto do banco de dados atual. Uma consulta que faz referência a um object_id em outro banco de dados retorna NULL ou resultados incorretos. Por exemplo, na consulta a seguir o contexto do banco de dados atual é AdventureWorks2022. O Mecanismo de Banco de Dados tenta retornar um nome de objeto para a identificação do objeto especificado naquele banco de dados em vez do banco de dados especificado na cláusula FROM da consulta. Portanto, informações incorretas são retornadas.
USE AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_NAME(object_id)
FROM master.sys.objects;
GO
Você pode resolver nomes de objeto no contexto de outro banco de dados especificando uma identificação de banco de dados. O exemplo a seguir especifica a identificação de banco de dados para o banco de dados master
na função OBJECT_SCHEMA_NAME
e retorna os resultados corretos.
USE AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
GO
Exemplos
a. Usando OBJECT_NAME em uma cláusula WHERE
O exemplo a seguir retorna colunas da exibição de catálogo sys.objects
para o objeto especificado por OBJECT_NAME
na cláusula WHERE
da instrução SELECT
.
USE AdventureWorks2022;
GO
DECLARE @MyID INT;
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2022.Production.Product',
'U'));
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(@MyID);
GO
B. Retornando o nome do esquema do objeto e o nome do objeto
O exemplo a seguir retorna o nome de esquema do objeto, nome de objeto e texto de SQL para todos os planos de consulta em cache que não sejam instruções ad hoc ou preparadas.
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. Retornando nomes de objetos de três partes
O exemplo a seguir retorna o banco de dados, esquema e nome de objeto juntamente com todas as outras colunas na exibição de gerenciamento dinâmico sys.dm_db_index_operational_stats
de todos os objetos em todos os bancos de dados.
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
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
D. Usando OBJECT_NAME em uma cláusula WHERE
O exemplo a seguir retorna colunas da exibição de catálogo sys.objects
para o objeto especificado por OBJECT_NAME
na cláusula WHERE
da instrução SELECT
. O número do seu objeto (274100017, no exemplo a seguir) será diferente. Para testar este exemplo, pesquise um número válido de objeto executando SELECT name, object_id FROM sys.objects;
no banco de dados.)
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(274100017);
Consulte Também
funções de metadados (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)