OBJECT_ID (Transact-SQL)
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
Gibt die Datenbankobjekt-ID eines Objekts mit Schemabereich zurück.
Wichtig
Objekte, die keine Schemas als Bereiche besitzen, z. B. DDL-Trigger, können nicht mit OBJECT_ID abgefragt werden. Rufen Sie für Objekte, die nicht in der sys.objects-Katalogsicht gefunden werden, die Objekt-IDs ab, indem Sie die entsprechende Katalogsicht abfragen. Verwenden Sie z.B. SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog``'
, um die Objekt-ID eines DDL-Triggers zurückzugeben.
Transact-SQL-Syntaxkonventionen
Syntax
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
Hinweis
Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.
Argumente
'object_name'
Das zu verwendende Objekt. object_name entspricht entweder dem Typ varchar oder nvarchar. Wenn object_name dem Typ varchar entspricht, wird eine implizite Konvertierung in nvarchar vorgenommen. Die Angabe des Datenbank- und des Schemanamens ist optional.
'object_type'
Der Objekttyp mit Schemabereich. object_type entspricht entweder dem Typ varchar oder nvarchar. Wenn object_type dem Typ varchar entspricht, wird eine implizite Konvertierung in nvarchar vorgenommen. Eine Liste der Objekttypen finden Sie in der Spalte Typ unter sys.objects (Transact-SQL).
Rückgabetypen
int
Ausnahmen
Für einen räumlichen Index gibt OBJECT_ID den Wert NULL zurück.
Gibt bei einem Fehler NULL zurück.
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 integrierte Funktionen (z. B. OBJECT_ID), die Metadaten ausgeben, möglicherweise NULL zurückgeben, wenn dem Benutzer für das Objekt keine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Metadata Visibility Configuration.
Bemerkungen
Wenn der Parameter für eine Systemfunktion optional ist, wird von der aktuellen Datenbank, dem aktuellen Hostcomputer, dem aktuellen Serverbenutzer oder dem aktuellen Datenbankbenutzer ausgegangen. Auf integrierte Funktionen müssen immer runde Klammern folgen.
Wenn der Name einer temporären Tabelle angegeben wird, muss der Datenbankname vor diesem angegeben werden, es sei denn, die aktuelle Datenbank ist tempdb. Beispiel: SELECT OBJECT_ID('tempdb..#mytemptable')
.
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 (Transact-SQL) und unter WHERE (Transact-SQL).
Beispiele
A. Zurückgeben der Objekt-ID für ein angegebenes Objekt
Das folgende Beispiel gibt die Objekt-ID für die Production.WorkOrder
-Tabelle in der AdventureWorks2022-Datenbank zurück.
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO
B. Überprüfen, ob ein Objekt vorhanden ist
Das folgende Beispiel überprüft das Vorhandensein einer angegebenen Tabelle, indem überprüft wird, ob die Tabelle eine Objekt-ID besitzt. Wenn die Tabelle vorhanden ist, wird sie gelöscht. Ist die Tabelle nicht vorhanden, wird die DROP TABLE
-Anweisung nicht ausgeführt.
USE AdventureWorks2022;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO
C. Angeben des Werts eines Systemfunktionsparameters mithilfe von OBJECT_ID
Im folgenden Beispiel werden Informationen zu allen Indizes und Partitionen der Person.Address
-Tabelle in der AdventureWorks2022-Datenbank zurückgegeben. Dazu wird die sys.dm_db_index_operational_stats-Funktion verwendet.
Hinweis
Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Wichtig
Wenn Sie die Transact-SQL-Funktionen DB_ID und OBJECT_ID zum Zurückgeben eines Parameterwerts verwenden, sollten Sie immer sicherstellen, dass eine gültige ID zurückgegeben wird. Wenn der Datenbank- oder Objektname nicht gefunden werden kann, wenn sie z. B. nicht vorhanden oder fehlerhaft geschrieben sind, geben beide Funktionen NULL zurück. Die sys.dm_db_index_operational_stats-Funktion interpretiert NULL als Platzhalterwert, der alle Datenbanken oder alle Objekte angibt. Da dies ein versehentlicher Vorgang sein kann, veranschaulichen die Beispiele in diesem Abschnitt, wie Sie auf sichere Weise Datenbank- und Objekt-IDs bestimmen.
DECLARE @db_id INT;
DECLARE @object_id INT;
SET @db_id = DB_ID(N'AdventureWorks2022');
SET @object_id = OBJECT_ID(N'AdventureWorks2022.Person.Address');
IF @db_id IS NULL
BEGIN;
PRINT N'Invalid database';
END;
ELSE IF @object_id IS NULL
BEGIN;
PRINT N'Invalid object';
END;
ELSE
BEGIN;
SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
END;
GO
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
D: Zurückgeben der Objekt-ID für ein angegebenes Objekt
Das folgende Beispiel gibt die Objekt-ID für die FactFinance
-Tabelle in der AdventureWorksPDW2022-Datenbank zurück.
SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';
Weitere Informationen
Metadatenfunktionen (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_NAME (Transact-SQL)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für