Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-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)