Freigeben über


OBJECT_ID (Transact-SQL)

Aktualisiert: 17. Juli 2006

Gibt die Datenbankobjekt-ID eines Objekts mit Schemabereich zurück.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

ms190328.note(de-de,SQL.90).gifWichtig:
Objekte ohne Schemabereich, z. Β. DDL-Trigger, können nicht mit OBJECT_ID abgefragt werden. Objekt-IDs von Objekten, die nicht in der sys.objects-Katalogsicht gefunden werden, können Sie durch Abfragen der entsprechenden Katalogsicht ermitteln. Verwenden Sie z. B. folgenden Befehl, um die Objekt-ID eines DDL-Triggers zurückzugeben: SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'

Syntax

OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] 
    object_name' [ ,'object_type' ] )

Argumente

  • 'object_name'
    Das zu verwendende Objekt. object_name ist entweder vom Typ varchar oder nvarchar. Wenn object_name vom Typ varchar ist, wird es implizit in nvarchar konvertiert. Die Angabe des Datenbank- und des Schemanamens ist optional.
  • 'object_type'
    Der Objekttyp mit Schemabereich object_type ist entweder vom Typ varchar oder nvarchar. Wenn object_type vom Typ varchar ist, wird es implizit in nvarchar konvertiert. Eine Liste von Objekttypen finden Sie unter der type-Spalte in sys.objects (Transact-SQL).

Rückgabetypen

int

Ausnahmen

Gibt bei einem Fehler NULL zurück.

In SQL Server 2005 kann ein Benutzer nur die Metadaten von sicherungsfähigen Elementen 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_ID, möglicherweise NULL zurückgeben, wenn dem Benutzer für das Objekt keine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Konfigurieren der Sichtbarkeit von Metadaten und unter Behandlung von Problemen bei der Sichtbarkeit von Metadaten.

Hinweise

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 Auswahlliste, in der 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

Im folgenden Beispiel wird die Objekt-ID für die Production.WorkOrder-Tabelle in der AdventureWorks-Datenbank zurückgegeben.

USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks.Production.WorkOrder') AS 'Object ID';
GO

B. Überprüfen auf Vorhandensein eines Objekts

Im folgenden Beispiel wird das Vorhandensein einer angegebenen Tabelle überprüft, indem sichergestellt wird, dass die Tabelle eine Objekt-ID besitzt. Ist die Tabelle vorhanden, wird sie gelöscht. Wenn die Tabelle nicht vorhanden ist, wird die DROP TABLE-Anweisung nicht ausgeführt.

USE AdventureWorks;
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 Wertes eines Systemfunktionsparameters

Im folgenden Beispiel werden Informationen zu allen Indizes und Partitionen der Person.Address-Tabelle in der AdventureWorks-Datenbank zurückgegeben. Dazu wird die sys.dm_db_index_operational_stats-Funktion verwendet.

ms190328.note(de-de,SQL.90).gifWichtig:
Wenn Sie die Transact-SQL-Funktionen DB_ID und OBJECT_ID zum Zurückgeben eines Parameterwertes verwenden, müssen Sie immer sicherstellen, dass eine gültige ID zurückgegeben wird. Wenn der Datenbank- oder Objektname nicht gefunden werden kann, z. B. weil er nicht vorhanden oder fehlerhaft geschrieben ist, 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 festlegen.
DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks');
SET @object_id = OBJECT_ID(N'AdventureWorks.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

Siehe auch

Verweis

Metadatenfunktionen (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_db_index_operational_stats
OBJECT_DEFINITION (Transact-SQL)
OBJECT_NAME (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

17. Juli 2006

Neuer Inhalt:
  • Der Abschnitt mit den Ausnahmen wurde hinzugefügt.

14. April 2006

Aktualisierter Inhalt:
  • Beispiel C wurde korrigiert.