OBJECT_SCHEMA_NAME (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics
Retorna o nome de esquema 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).
Observação
A função OBJECT_SCHEMA_NAME
só tem suporte em pools de SQL dedicados no Azure Synapse Analytics.
Convenções de sintaxe de Transact-SQL
Sintaxe
OBJECT_SCHEMA_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 em que o objeto deve ser pesquisado. 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 abre o banco de dados.
Um usuário só pode exibir metadados de protegíveis de sua propriedade ou para os quais recebeu permissão. Funções internas emissoras de metadados, como OBJECT_SCHEMA_NAME
podem 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 conjunto de resultados retornado por esta função de sistema usa a ordenação do banco de dados atual.
Se database_id não for especificado, o Mecanismo de Banco de Dados do SQL Server presumirá 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 esquema de objeto para object_id
especificado no banco de dados atual, em lugar do banco de dados especificado na cláusula FROM da consulta. Portanto, informações incorretas são retornadas.
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id)
FROM master.sys.objects;
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.
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
Exemplos
a. Retornar o nome do esquema do objeto e o nome do objeto
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
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_statement
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
B. Retornar nomes de objetos de três partes
O exemplo a seguir retorna o banco de dados, o esquema e o nome do objeto para todos os objetos no contexto atual do banco de dados.
SELECT QUOTENAME(DB_NAME(db_id()))
+ N'.'
+ QUOTENAME(OBJECT_SCHEMA_NAME(object_id, db_id()))
+ N'.'
+ QUOTENAME(OBJECT_NAME(object_id, db_id()))
, *
FROM sys.objects;
GO
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.
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
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