Share via


OBJECT_SCHEMA_NAME (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics

Restituisce il nome dello schema di database per gli oggetti con ambito schema. Per un elenco degli oggetti con ambito schema, vedere sys.objects (Transact-SQL).

Nota

La funzione OBJECT_SCHEMA_NAME è supportata solo nei pool SQL dedicati in Azure Synapse Analytics.

Convenzioni di sintassi Transact-SQL

Sintassi

OBJECT_SCHEMA_NAME ( object_id [, database_id ] )  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

object_id

ID dell'oggetto da utilizzare. object_id è di tipo int e si presume che sia un oggetto con ambito schema nel database specificato o nel contesto del database corrente.

database_id

ID del database in cui deve essere cercato l'oggetto. database_id è int.

Tipi restituiti

sysname

Eccezioni

Restituisce NULL in caso di errore o se un chiamante non dispone dell'autorizzazione necessaria per visualizzare l'oggetto. Se nel database di destinazione è impostata l'opzione AUTO_CLOedizione Standard su ON, la funzione apre il database.

Un utente può visualizzare esclusivamente i metadati delle entità a sicurezza diretta di cui è proprietario o per cui ha ricevuto un'autorizzazione. Le funzioni predefinite di creazione di metadati, ad OBJECT_SCHEMA_NAME esempio , possono restituire NULL se l'utente non dispone di alcuna autorizzazione per l'oggetto. Per altre informazioni, vedere Metadata Visibility Configuration.

Autorizzazioni

È richiesta l'autorizzazione ANY per l'oggetto. Per specificare l'ID di un database, è inoltre necessaria l'autorizzazione CONNECT per il database o l'abilitazione dell'account guest.

Osservazioni:

È possibile utilizzare funzioni di sistema nell'elenco di selezione, nella clausola WHERE e in tutti i casi in cui è consentita un'espressione. Per altre informazioni, vedere Espressioni e WHERE.

Il set di risultati restituito da questa funzione di sistema utilizza le regole di confronto del database corrente.

Se database_id non viene specificato, sql Server motore di database presuppone che object_id si tratti del contesto del database corrente. Una query che fa riferimento a un oggetto object_id in un altro database restituisce NULL o risultati non corretti. Nella query seguente, ad esempio, il contesto del database corrente è AdventureWorks2022. Il motore di database tenta di restituire un nome di schema oggetto per l'oggetto specificato nel database corrente anziché il database specificato object_id nella clausola FROM della query. Verranno pertanto restituite informazioni errate.

SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id)  
FROM master.sys.objects;  

Nell'esempio seguente viene specificato l'ID del database master nella funzione OBJECT_SCHEMA_NAME e vengono restituiti i risultati corretti.

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

Esempi

R. Restituire il nome dello schema dell'oggetto e il nome dell'oggetto

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Nell'esempio seguente vengono restituiti il nome dello schema dell'oggetto, il nome dell'oggetto e il testo SQL per tutti i piani di query memorizzati nella cache che non sono istruzioni ad hoc o preparate.

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. Restituire nomi di oggetti in tre parti

Nell'esempio seguente vengono restituiti il database, lo schema e il nome dell'oggetto per tutti gli oggetti nel contesto del database corrente.

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  

Nell'esempio seguente vengono restituiti il nome del database, dello schema e dell'oggetto, nonché tutte le altre colonne della vista a gestione dinamica sys.dm_db_index_operational_stats per tutti gli oggetti di tutti i database.

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di 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  

Passaggi successivi