Partilhar via


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  

Próximas etapas