Sdílet prostřednictvím


OBJECT_SCHEMA_NAME (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrátí název schématu databáze pro objekty s oborem schématu. Seznam objektů vymezených schématem naleznete v tématu sys.objects (Transact-SQL).

Transact-SQL konvence syntaxe

Syntaxe

OBJECT_SCHEMA_NAME ( object_id [, database_id ] )  

Arguments

object_id

ID objektu, který se má použít. object_id je int a předpokládá se, že se jedná o objekt s oborem schématu v zadané databázi nebo v aktuálním kontextu databáze.

database_id

ID databáze, ve které se má objekt vyhledat. database_id je int.

Návratové typy

sysname

Exceptions

Vrátí hodnotu NULL při chybě nebo pokud volající nemá oprávnění k zobrazení objektu. Pokud má cílová databáze možnost AUTO_CLOSE nastavenou na zapnuto, funkce otevře databázi.

Uživatel může zobrazit pouze metadata zabezpečitelných, která uživatel vlastní nebo na kterých má uživatel udělená oprávnění. Metadata generující předdefinované funkce, jako OBJECT_SCHEMA_NAME je například může vrátit hodnotu NULL, pokud uživatel nemá žádné oprávnění k objektu. Další informace naleznete v tématu Konfigurace viditelnosti metadat.

Povolení

Vyžaduje oprávnění ANY k objektu. Pokud chcete zadat ID databáze, vyžaduje se také oprávnění CONNECT k databázi nebo musí být povolený účet hosta.

Poznámky

Systémové funkce lze použít v seznamu select, v klauzuli WHERE a kdekoli je povolený výraz. Další informace naleznete v tématu Výrazy a WHERE.

Sada výsledků vrácená touto systémovou funkcí používá kolaci aktuální databáze.

Pokud není zadán database_id , databázový stroj SQL Serveru předpokládá, že object_id je v kontextu aktuální databáze. Dotaz, který odkazuje na jinou object_id databázi, vrátí hodnotu NULL nebo nesprávné výsledky. Například v následujícím dotazu je kontext aktuální databáze AdventureWorks2025. Databázový stroj se pokusí vrátit název schématu objektu pro zadané object_id v aktuální databázi místo databáze zadané v klauzuli FROM dotazu. Proto se vrátí nesprávné informace.

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

Následující příklad určuje ID databáze pro master databázi ve OBJECT_SCHEMA_NAME funkci a vrátí správné výsledky.

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

Examples

A. Vrácení názvu schématu objektu a názvu objektu

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Následující příklad vrátí název schématu objektu, název objektu a text SQL pro všechny plány dotazů v mezipaměti, které nejsou ad hoc nebo připravené příkazy.

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. Vrácení třídílných názvů objektů

Následující příklad vrátí název databáze, schématu a objektu pro všechny objekty v aktuálním kontextu databáze.

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  

Následující příklad vrátí název databáze, schématu a objektu spolu se všemi ostatními sloupci v sys.dm_db_index_operational_stats zobrazení dynamické správy pro všechny objekty ve všech databázích.

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

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  

Další kroky