OBJECT_NAME (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Retourneert de naam van het databaseobject voor objecten met schemabereik. Zie sys.objects (Transact-SQL) voor een lijst met objecten met schemabereik.

Transact-SQL syntaxis-conventies

Syntaxis

OBJECT_NAME ( object_id [, database_id ] )  

Argumenten

object_id

De id van het object dat moet worden gebruikt. object_id is int en wordt ervan uitgegaan dat het een schemabereikobject is in de opgegeven database of in de huidige databasecontext.

database_id

De id van de database waar het object moet worden opgezoekd. database_id is int.

Retourtypen

sysname

Uitzonderingen

Retourneert NULL bij fout of als een aanroeper niet gemachtigd is om het object weer te geven. Als voor de doeldatabase de optie AUTO_CLOSE is ingesteld op AAN, wordt de database door de functie geopend.

Een gebruiker kan alleen de metagegevens van beveiligbare items bekijken waarvan de gebruiker eigenaar is of waarvoor de gebruiker is gemachtigd. Dit betekent dat door metagegevens verzonden ingebouwde functies, zoals OBJECT_NAME NULL kunnen retourneren als de gebruiker geen machtiging voor het object heeft. Zie Zichtbaarheidsconfiguratie voor metagegevensvoor meer informatie.

Machtigingen

Vereist ANY-machtigingen voor het object. Als u een database-id wilt opgeven, moet u ook verbinding maken met de database of moet het gastaccount zijn ingeschakeld.

Opmerkingen

Systeemfuncties kunnen worden gebruikt in de selectielijst, in de WHERE-component en overal waar een expressie is toegestaan. Zie Expressies en WHERE voor meer informatie.

De waarde die door deze systeemfunctie wordt geretourneerd, maakt gebruik van de sortering van de huidige database.

Standaard gaat de SQL Server Database Engine ervan uit dat object_id zich in de context van de huidige database bevindt. In SQL Server of Azure SQL Managed Instance geeft een zoekopdracht die verwijst naar een object_id in een andere database onjuiste resultaten terug.NULL Bijvoorbeeld, in de volgende query is de context van de huidige database AdventureWorks2025. De database-engine probeert een objectnaam te retourneren voor de opgegeven object-id in die database in plaats van de database die is opgegeven in de FROM-component van de query. Daarom wordt onjuiste informatie geretourneerd.

Note

In Azure SQL Database en SQL Database in Microsoft Fabric zijn cross-database queries niet beschikbaar.

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

U kunt objectnamen omzetten in de context van een andere database door een database-id op te geven. Het volgende voorbeeld specificeert de database-ID voor een andere gebruikersdatabase, AdventureWorksDW2022, met de OBJECT_SCHEMA_NAME functie, en geeft de juiste resultaten terug.

USE AdventureWorks2022;  
GO  
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, DB_ID(N'AdventureWorksDW2022')) AS schema_name
FROM AdventureWorksDW2022.sys.objects;  
GO  

Voorbeelden

Eén. OBJECT_NAME gebruiken in een WHERE-component

In het volgende voorbeeld worden kolommen geretourneerd uit de sys.objects catalogusweergave voor het object dat is OBJECT_NAME opgegeven in de WHERE component van de SELECT instructie.

Note

In Azure SQL Database en SQL Database in Microsoft Fabric is de USE instructie niet beschikbaar. Maak in plaats daarvan direct verbinding met de beoogde database en voer de rest van het codevoorbeeld uit.

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. De objectschemanaam en objectnaam retourneren

In het volgende voorbeeld wordt de objectschemanaam, objectnaam en SQL-tekst geretourneerd voor alle in de cache opgeslagen queryplannen die geen ad-hoc- of voorbereide instructies zijn.

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. Namen van drie delen van objecten retourneren

In het volgende voorbeeld worden de database, het schema en de objectnaam samen met alle andere kolommen in de sys.dm_db_index_operational_stats dynamische beheerweergave geretourneerd voor alle objecten in alle databases.

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  

Voorbeelden: Azure Synapse Analytics

D. OBJECT_NAME gebruiken in een WHERE-component

In het volgende voorbeeld worden kolommen geretourneerd uit de sys.objects catalogusweergave voor het object dat is OBJECT_NAME opgegeven in de WHERE component van de SELECT instructie. (Het objectnummer (274100017 in het onderstaande voorbeeld) is anders. Als u dit voorbeeld wilt testen, zoekt u een geldig objectnummer op door deze uit te SELECT name, object_id FROM sys.objects; voeren in uw database.)

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