Partilhar via


OBJECT_SCHEMA_NAME (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Retorna o nome do esquema do 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_SCHEMA_NAME ( object_id [, database_id ] )  

Arguments

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

Exceptions

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. 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 Configuração de visibilidade de metadados.

Permissions

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 conjunto de resultados retornado por essa função do sistema usa o agrupamento do banco de dados atual.

Se database_id não for especificado, o Mecanismo de Banco de Dados do SQL Server assumirá 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 esquema de objeto para o especificado object_id no banco de dados atual em vez 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 ID do banco de dados para o masterOBJECT_SCHEMA_NAME banco de dados na função e retorna os resultados corretos.

SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name  
FROM master.sys.objects;   

Examples

A. Retornar o nome do esquema de objeto e o nome do objeto

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure

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_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 objeto 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 de banco de dados atual.

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, 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.

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada 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óximos passos