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.

Objekte, die nicht schemabereichsgesteuert sind, z. B. DDL-Trigger (Data Definition Language), können nicht mithilfe OBJECT_IDvon Abfragen abgefragt werden. Rufen Sie für Objekte, die in der Katalogansicht "sys.objects " nicht gefunden werden, die Objektidentifikationsnummern ab, indem Sie die entsprechende Katalogansicht 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

N'object_name'

Das zu verwendende Objekt. object_name entspricht entweder dem Typ varchar oder nvarchar. Ein Varcharwert von object_name wird implizit in nvarchar konvertiert. Die Angabe des Datenbank- und des Schemanamens ist optional.

N'object_type'

Der Objekttyp mit Schemabereich. object_type entspricht entweder dem Typ varchar oder nvarchar. Ein Varcharwert von object_type wird implizit in nvarchar konvertiert. Eine Liste der Objekttypen finden Sie in der Spalte Typ unter sys.objects (Transact-SQL).

Rückgabetypen

int

Ausnahmen

Gibt für einen räumlichen Index OBJECT_ID zurück NULL.

Gibt NULL den Fehler zurück.

Ein Benutzer kann nur die Metadaten von sicherungsfähigen Daten anzeigen, die der Benutzer besitzt oder für die der Benutzer die Berechtigung erteilt hat. Dies bedeutet, dass metadatenmittierende, integrierte Funktionen wie OBJECT_ID z. B. zurückgegeben NULL werden können, wenn der Benutzer keine Berechtigung für das Objekt besitzt. 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. Sie müssen immer integrierte Funktionen mit Klammern befolgen.

Wenn ein temporärer Tabellenname angegeben wird, muss der Datenbankname vor dem temporären Tabellennamen stehen, es sei denn, die aktuelle Datenbank ist tempdb. Zum Beispiel:

SELECT OBJECT_ID('tempdb..#mytemptable');

Systemfunktionen können in der Auswahlliste, in der Klausel und an einer beliebigen Stelle verwendet werden, an der WHERE ein Ausdruck zulässig ist. Weitere Informationen finden Sie unter Ausdrücke (Transact-SQL) und unter WHERE (Transact-SQL).

Beispiele

Dieser Artikel erfordert die AdventureWorks2022-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.

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. Wenn die Tabelle nicht vorhanden ist, 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. Verwenden von OBJECT_ID zum Angeben des Werts eines Systemfunktionsparameters

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.

Wenn Sie die Transact-SQL-Funktionen DB_ID verwenden und OBJECT_ID einen Parameterwert zurückgeben, stellen Sie immer sicher, dass eine gültige ID zurückgegeben wird. Wenn der Datenbank- oder Objektname nicht gefunden werden kann, z. B. wenn sie nicht vorhanden sind oder falsch geschrieben sind, werden beide Funktionen zurückgegeben NULL. Die sys.dm_db_index_operational_stats Funktion wird als Wild Karte wert interpretiertNULL, der alle Datenbanken oder alle Objekte angibt. Da dieser Vorgang unbeabsichtigt sein kann, veranschaulicht das Beispiel in diesem Abschnitt die sichere Methode zum Ermitteln von Datenbank- und Objekt-IDs.

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';