Sdílet prostřednictvím


OBJECT_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 databázového objektu 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_NAME ( object_id [, database_id ] )  

Argumenty

object_id
Je 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
Je ID databáze, ve které se má objekt vyhledat. database_id je int.

Návratové typy

sysname

Výjimky

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 databázi otevře.

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í. To znamená, že integrované funkce metadat, jako je například OBJECT_NAME, můžou vrátit hodnotu NULL, pokud uživatel nemá žádné oprávnění k objektu. Další informace naleznete v kapitole 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.

Hodnota vrácená touto systémovou funkcí používá kolaci aktuální databáze.

Ve výchozím nastavení databázový stroj SQL Serveru předpokládá, že object_id je v kontextu aktuální databáze. Dotaz, který odkazuje na object_id v jiné 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 objektu pro zadané ID objektu v této databázi místo databáze zadané v klauzuli FROM dotazu. Proto se vrátí nesprávné informace.

USE AdventureWorks2022;  
GO  
SELECT DISTINCT OBJECT_NAME(object_id)  
FROM master.sys.objects;  
GO  

Názvy objektů můžete přeložit v kontextu jiné databáze zadáním ID databáze. 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.

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

Příklady

A. Použití OBJECT_NAME v klauzuli WHERE

Následující příklad vrátí sloupce ze sys.objects zobrazení katalogu pro objekt určený OBJECT_NAME v WHERE klauzuli SELECT příkazu.

USE AdventureWorks2022;  
GO  
DECLARE @MyID INT;  
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2022.Production.Product',  
    'U'));  
SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(@MyID);  
GO  

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

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_text  
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  

C. Vrácení třídílných názvů objektů

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.

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  

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

D. Použití OBJECT_NAME v klauzuli WHERE

Následující příklad vrátí sloupce ze sys.objects zobrazení katalogu pro objekt určený OBJECT_NAME v WHERE klauzuli SELECT příkazu. (Číslo objektu (274100017 v následujícím příkladu) se bude lišit. Pokud chcete tento příklad otestovat, vyhledejte platné číslo objektu spuštěním SELECT name, object_id FROM sys.objects; v databázi.)

SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(274100017);  

Viz také

Funkce metadat (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)