OBJECT_NAME (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Gibt den Namen des Datenbankobjekts für Objekte mit Schemabereich zurück. Eine Liste der schemabezogenen Objekte finden Sie unter sys.objects (Transact-SQL).
Transact-SQL-Syntaxkonventionen
Syntax
OBJECT_NAME ( object_id [, database_id ] )
Argumente
object_id
Die ID des zu verwendenden Objekts. object_id ist vom Datentyp int, und es wird davon ausgegangen, dass es sich um ein schemabezogenes Objekt in der angegebenen Datenbank oder im aktuellen Datenbankkontext handelt.
database_id
Die ID der Datenbank, in der das Objekt gesucht werden soll. Die database_id ist int.
Rückgabetypen
sysname
Ausnahmen
Gibt NULL bei einem Fehler zurück oder wenn ein Aufrufer nicht über Berechtigungen zum Anzeigen des Objekts verfügt. Wenn für die Zieldatenbank AUTO_CLOSE auf ON festgelegt wurde, wird die Datenbank mithilfe der Funktion geöffnet.
Ein Benutzer kann nur die Metadaten sicherungsfähiger Elemente anzeigen, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Dies bedeutet, dass Metadaten ausgebende integrierte Funktionen, z. B. OBJECT_NAME, möglicherweise NULL zurückgeben, wenn dem Benutzer für das Objekt keine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Metadata Visibility Configuration.
Berechtigungen
Erfordert die ANY-Berechtigung für das Objekt. Zum Angeben einer Datenbank-ID ist eine CONNECT-Berechtigung erforderlich, oder das Gastkonto muss aktiviert werden.
Hinweise
Systemfunktionen können in der SELECT-Liste, in einer WHERE-Klausel und überall dort verwendet werden, wo ein Ausdruck zulässig ist. Weitere Informationen finden Sie unter Ausdrücke und WHERE.
Für den von dieser Systemfunktion zurückgegebenen Wert wird die Sortierung der aktuellen Datenbank verwendet.
Die SQL Server-Datenbank-Engine setzt voraus, dass object_id sich im Kontext der aktuellen Datenbank befindet. Eine Abfrage, die auf einen Wert für object_id in einer anderen Datenbank verweist, gibt entweder NULL oder falsche Ergebnisse zurück. Beispielsweise ist in der folgenden Abfrage der Kontext der aktuellen Datenbank AdventureWorks2022. Die Datenbank-Engine versucht, einen Objektnamen für die angegebene Objekt-ID in dieser Datenbank zurückzugeben, statt in der in der FROM-Klausel der Abfrage angegebenen Datenbank. Deshalb werden fehlerhafte Informationen zurückgegeben.
USE AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_NAME(object_id)
FROM master.sys.objects;
GO
Sie können Objektnamen im Kontext einer anderen Datenbank auflösen, indem Sie eine Datenbank-ID angeben. Im folgenden Beispiel wird die Datenbank-ID für die master
-Datenbank in der OBJECT_SCHEMA_NAME
-Funktion angegeben, und die richtigen Ergebnisse werden zurückgegeben.
USE AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
GO
Beispiele
A. Verwenden von OBJECT_NAME in einer WHERE-Klausel
Das folgende Beispiel gibt Spalten aus der sys.objects
-Katalogsicht für das durch OBJECT_NAME
in der WHERE
-Klausel der SELECT
-Anweisung angegebene Objekt zurück.
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. Zurückgeben des Objektschemanamens und des Objektnamens
Im folgenden Beispiel werden der Schemaname des Objekts, der Objektname und SQL-Text für alle zwischengespeicherten Abfragepläne zurückgegeben, bei denen es sich nicht um Ad-hoc- oder vorbereitete Anweisungen handelt.
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. Zurückgeben von Objektnamen, die aus drei Teilen bestehen
Im folgenden Beispiel werden für alle Objekte in allen Datenbanken die Datenbank, das Schema und der Objektname sowie alle anderen Spalten in der dynamischen Verwaltungssicht sys.dm_db_index_operational_stats
zurückgegeben.
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
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
D: Verwenden von OBJECT_NAME in einer WHERE-Klausel
Das folgende Beispiel gibt Spalten aus der sys.objects
-Katalogsicht für das durch OBJECT_NAME
in der WHERE
-Klausel der SELECT
-Anweisung angegebene Objekt zurück. (Ihre Objektnummer wird sich von der im untenstehenden Beispiel unterscheiden (hier: 274100017).) Wenn Sie dieses Beispiel testen möchten, suchen Sie nach einer gültigen Objektnummer, indem Sie SELECT name, object_id FROM sys.objects;
in Ihrer Datenbank ausführen.)
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(274100017);
Siehe auch
Metadatenfunktionen (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)