Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Retorna o nome do objeto de banco de dados para objetos com escopo de esquema. Para obter uma lista de objetos com escopo de esquema, consulte sys.objects (Transact-SQL).
Transact-SQL convenções de sintaxe
Sintaxe
OBJECT_NAME ( object_id [, database_id ] )
Argumentos
object_id
É a ID do objeto a ser usado.
object_id é int e é assumido como um objeto de escopo de 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. database_id é int.
Tipos de devolução
sysname
Exceções
Retorna NULL no 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 visualizar os metadados de protegíveis que o usuário possui ou sobre os quais o usuário recebeu permissão. Isso significa que funções internas emissoras de metadados, como OBJECT_NAME, podem retornar NULL se o usuário não tiver nenhuma permissão no objeto. Para obter mais informações, consulte Configuração de visibilidade de metadados.
Permissões
Requer QUALQUER permissão no objeto. Para especificar um ID de banco de dados, a permissão CONNECT para o banco de dados também é necessária ou a conta de convidado deve estar habilitada.
Observações
As funções do sistema podem ser usadas na lista de seleção, na cláusula WHERE e em qualquer lugar em que uma expressão seja permitida. Para obter mais informações, consulte Expressões e ONDE.
O valor retornado por essa função do sistema usa o agrupamento do banco de dados atual.
Por padrão, o Mecanismo de Banco de Dados do SQL Server assume 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 resultados NULL ou incorretos. Por exemplo, na consulta seguinte, o contexto da base de dados atual é AdventureWorks2025. O Mecanismo de Banco de Dados tenta retornar um nome de objeto para a ID de objeto especificada nesse 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 objetos no contexto de outro banco de dados especificando uma ID de banco de dados. O exemplo a seguir especifica a ID do banco de dados para o masterOBJECT_SCHEMA_NAME banco de dados na função 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
Um. Usando OBJECT_NAME em uma cláusula WHERE
O exemplo a seguir retorna colunas da sys.objects exibição de catálogo para o objeto especificado por OBJECT_NAME na WHERE cláusula da SELECT instrução.
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 de objeto e o nome do objeto
O exemplo a seguir retorna o nome do esquema de objeto, o nome do objeto e o texto SQL para todos os planos de consulta armazenados em cache que não são 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 objeto de três partes
O exemplo a seguir retorna o banco de dados, o esquema e o nome do objeto junto com todas as outras colunas no sys.dm_db_index_operational_stats modo de exibição de gerenciamento dinâmico para 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 and Analytics Platform System (PDW)
D. Usando OBJECT_NAME em uma cláusula WHERE
O exemplo a seguir retorna colunas da sys.objects exibição de catálogo para o objeto especificado por OBJECT_NAME na WHERE cláusula da SELECT instrução. (O número do objeto (274100017 no exemplo abaixo) será diferente. Para testar este exemplo, procure um número de objeto válido executando SELECT name, object_id FROM sys.objects; em seu banco de dados.)
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(274100017);
Ver também
Funções de metadados (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)