Dela via


OBJECT_NAME (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Returnerar databasobjektnamnet för schemaomfattande objekt. En lista över schemaomfattande objekt finns i sys.objects (Transact-SQL).

Transact-SQL syntaxkonventioner

Syntax

OBJECT_NAME ( object_id [, database_id ] )  

Argumentpunkter

object_id
Är ID:t för det objekt som ska användas. object_id är int och antas vara ett schemaomfattande objekt i den angivna databasen eller i den aktuella databaskontexten.

database_id
Är ID:t för databasen där objektet ska letas upp. database_id är int.

Returtyper

sysname

Exceptions

Returnerar NULL vid fel eller om en anropare inte har behörighet att visa objektet. Om måldatabasen har alternativet AUTO_CLOSE inställt på PÅ öppnar funktionen databasen.

En användare kan bara visa metadata för skyddsbara filer som användaren äger eller som användaren har beviljats behörighet för. Det innebär att metadatautsändande, inbyggda funktioner som OBJECT_NAME kan returnera NULL om användaren inte har någon behörighet för objektet. För mer information, se inställningar för metadatasynlighet.

Behörigheter

Kräver ALLA behörigheter för objektet. Om du vill ange ett databas-ID krävs också CONNECT-behörighet till databasen, eller så måste gästkontot vara aktiverat.

Anmärkningar

Systemfunktioner kan användas i urvalslistan, i WHERE-satsen och var som helst där ett uttryck tillåts. Mer information finns i Uttryck och WHERE.

Värdet som returneras av den här systemfunktionen använder sortering av den aktuella databasen.

Som standard förutsätter SQL Server Database Engine att object_id finns i kontexten för den aktuella databasen. En fråga som refererar till en object_id i en annan databas returnerar NULL eller felaktiga resultat. I följande fråga är till exempel kontexten för den aktuella databasen AdventureWorks2022. Databasmotorn försöker returnera ett objektnamn för det angivna objekt-ID:t i databasen i stället för databasen som anges i FROM-satsen i frågan. Därför returneras felaktig information.

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

Du kan lösa objektnamn i kontexten för en annan databas genom att ange ett databas-ID. I följande exempel anges databas-ID för master databasen i OBJECT_SCHEMA_NAME funktionen och rätt resultat returneras.

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

Exempel

A. Använda OBJECT_NAME i en WHERE-sats

I följande exempel returneras kolumner från sys.objects katalogvyn för det objekt som anges av OBJECT_NAME i WHERE instruktionens sats SELECT .

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. Returnera objektets schemanamn och objektnamn

I följande exempel returneras objektets schemanamn, objektnamn och SQL-text för alla cachelagrade frågeplaner som inte är ad hoc- eller förberedda instruktioner.

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. Returnerar objektnamn i tre delar

I följande exempel returneras databasen, schemat och objektnamnet tillsammans med alla andra kolumner i den sys.dm_db_index_operational_stats dynamiska hanteringsvyn för alla objekt i alla databaser.

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  

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

D. Använda OBJECT_NAME i en WHERE-sats

I följande exempel returneras kolumner från sys.objects katalogvyn för det objekt som anges av OBJECT_NAME i WHERE instruktionens sats SELECT . (Ditt objektnummer (274100017 i exemplet nedan) kommer att vara annorlunda. Om du vill testa det här exemplet letar du upp ett giltigt objektnummer genom att SELECT name, object_id FROM sys.objects; köra i databasen.)

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

Se även

Metadata functions (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)