OBJECT_ID (Transact-SQL)

 

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data Warehouse

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

System_CAPS_ICON_important.jpg Wichtig


Objekte, die keine Schemas als Bereiche besitzen, z. B. DDL-Trigger, können nicht mit OBJECT_ID abgefragt werden. Für Objekte, die in nicht gefunden werden die sys.objects Katalogsicht, die Objekt-IDs abrufen, indem Sie die entsprechende Katalogsicht Abfragen. Um die Objekt-ID eines DDL-Triggers zurückzugeben, verwenden Sie z. B. SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog``'.

Topic link icon Transact-SQL-Syntaxkonventionen

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
  
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]   
  object_name' [ ,'object_type' ] )  

" Object_name "
Ist das Objekt verwendet werden. Object_name handelt es sich um Varchar oder Nvarchar. Wenn Object_name ist Varchar, wird es implizit in konvertiert Nvarchar. Die Angabe des Datenbank- und des Schemanamens ist optional.

" Object_type "
Der Objekttyp mit Schemabereich. Object_type handelt es sich um Varchar oder Nvarchar. Wenn Object_type ist Varchar, wird es implizit in konvertiert Nvarchar. Eine Liste der Objekttypen, finden Sie unter den Typ Spalte sys.objects ( Transact-SQL ).

int

Für einen räumlichen Index gibt OBJECT_ID den Wert NULL zurück.

Gibt NULL zurück, bei einem Fehler.

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.

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 ein temporären Tabellennamen angegeben wird, muss der Datenbankname vor den Namen der temporären Tabelle stammen, wenn 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 auf DEM ( Transact-SQL ).

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 AdventureWorks2012-Datenbank zurück.

USE master;  
GO  
SELECT OBJECT_ID(N'AdventureWorks2012.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 AdventureWorks2012;  
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

Das folgende Beispiel gibt Informationen für alle Indizes und Partitionen der Person.Address -Tabelle in der AdventureWorks2012 her, indem die Sys. dm_db_index_operational_stats Funktion.

System_CAPS_ICON_important.jpg 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'AdventureWorks2012');  
SET @object_id = OBJECT_ID(N'AdventureWorks2012.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  

D: Zurückgeben der ObjectID für ein angegebenes Objekt

Das folgende Beispiel gibt die Objekt-ID für die FactFinance-Tabelle in der AdventureWorksPDW2012-Datenbank zurück.

SELECT OBJECT_ID(AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';  

Metadatenfunktionen ( Transact-SQL )
Sys.Objects ( Transact-SQL )
Sys. dm_db_index_operational_stats ( Transact-SQL )
OBJECT_DEFINITION ( Transact-SQL )
Object_name ( Transact-SQL )

Community-Beiträge

HINZUFÜGEN
Anzeigen: