Megosztás a következőn keresztül:


OBJECT_NAME (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

A séma hatókörű objektumok adatbázis-objektumának nevét adja vissza. A séma hatókörű objektumok listáját a sys.objects (Transact-SQL) című témakörben találja.

Transact-SQL szintaxis konvenciók

Szemantika

OBJECT_NAME ( object_id [, database_id ] )  

Érvek

object_id
A használni kívánt objektum azonosítója. object_idint , és azt feltételezi, hogy séma hatókörű objektum a megadott adatbázisban vagy az aktuális adatbázis-környezetben.

database_id
Annak az adatbázisnak az azonosítója, amelyben az objektumot fel kell keresni. database_idint.

Visszatérési típusok

sysname

Kivételek

Null értéket ad vissza hiba esetén, vagy ha a hívó nem rendelkezik engedéllyel az objektum megtekintéséhez. Ha a céladatbázisban a AUTO_CLOSE beállítás BE értékre van állítva, a függvény megnyitja az adatbázist.

A felhasználó csak azoknak a biztonságos adatoknak a metaadatait tekintheti meg, amelyek a felhasználó tulajdonában vannak, vagy amelyekhez a felhasználó engedélyt kapott. Ez azt jelenti, hogy a metaadatkibocsátó, beépített függvények, például a OBJECT_NAME null értéket adhatnak vissza, ha a felhasználónak nincs engedélye az objektumra. További információ: Metaadatok láthatóságának konfigurációja.

Engedélyek

Bármilyen engedélyre van szükség az objektumon. Az adatbázis-azonosító megadásához connect-engedélyre is szükség van az adatbázishoz, vagy engedélyezni kell a vendégfiókot.

Megjegyzések

A rendszerfüggvények használhatók a kiválasztási listában, a WHERE záradékban, és bárhol, ahol egy kifejezés engedélyezve van. További információ: Kifejezések és HOL.

A rendszerfüggvény által visszaadott érték az aktuális adatbázis rendezést használja.

Alapértelmezés szerint az SQL Server adatbázismotor feltételezi, hogy object_id az aktuális adatbázis kontextusában van. Egy másik adatbázisban lévő object_id hivatkozó lekérdezés NULL vagy helytelen eredményt ad vissza. Például a következő lekérdezésben az aktuális adatbázis kontextusa az AdventureWorks2025. Az adatbázismotor a lekérdezés FROM záradékában megadott adatbázis helyett a megadott objektumazonosító objektumnevét próbálja visszaadni az adatbázisban. Ezért a rendszer helytelen adatokat ad vissza.

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

Egy adatbázis-azonosító megadásával feloldhatja az objektumneveket egy másik adatbázis kontextusában. Az alábbi példa a függvény adatbázis-azonosítóját masterOBJECT_SCHEMA_NAME adja meg, és a megfelelő eredményeket adja vissza.

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

Példák

Egy. OBJECT_NAME használata WHERE záradékban

Az alábbi példa az sys.objects utasítás záradékában OBJECT_NAME megadott WHERE objektum katalógusnézetének SELECT oszlopait adja vissza.

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. Az objektumséma nevének és az objektum nevének visszaadása

Az alábbi példa az objektumséma nevét, az objektumnevet és az SQL-szöveget adja vissza az összes olyan gyorsítótárazott lekérdezési tervhez, amely nem alkalmi vagy előkészített utasítás.

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. Háromrészes objektumnevek visszaadása

Az alábbi példa visszaadja az adatbázis, a séma és az objektum nevét, valamint a sys.dm_db_index_operational_stats dinamikus felügyeleti nézetben lévő összes többi oszlopot az összes adatbázis összes objektumához.

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éldák: Azure Synapse Analytics and Analytics Platform System (PDW)

D. OBJECT_NAME használata WHERE záradékban

Az alábbi példa az sys.objects utasítás záradékában OBJECT_NAME megadott WHERE objektum katalógusnézetének SELECT oszlopait adja vissza. (Az objektum száma (274100017 az alábbi példában) eltérő lesz. A példa teszteléséhez keressen egy érvényes objektumszámot az adatbázisban való végrehajtással SELECT name, object_id FROM sys.objects; .)

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

Lásd még:

Metaadatfüggvények (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)