Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databá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).
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)