Sdílet prostřednictvím


OBJECT_ID (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrátí identifikační číslo databázového objektu objektu s oborem schématu.

Objekty, které nejsou vymezeny schématem, jako jsou triggery DDL (Data Definition Language), nelze dotazovat pomocí OBJECT_ID. Pro objekty, které nejsou nalezeny v zobrazení katalogu sys.objects , získejte identifikační čísla objektu dotazováním příslušného zobrazení katalogu. Pokud chcete například vrátit identifikační číslo objektu triggeru DDL, použijte SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'.

Transact-SQL konvence syntaxe

Syntaxe

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

Argumenty

N'object_name'

Objekt, který se má použít. object_name je varchar nebo nvarchar. Hodnota varcharobject_name je implicitně převedena na nvarchar. Zadání názvů databází a schémat je volitelné.

N'object_type'

Typ objektu s oborem schématu. object_type je varchar nebo nvarchar. Hodnota varcharobject_type je implicitně převedena na nvarchar. Seznam typů objektů naleznete ve sloupci typu sys.objects (Transact-SQL).

Návratové typy

int

Výjimky

Pro prostorový index vrátí OBJECT_ID hodnotu NULL.

Vrátí NULL chybu.

Uživatel může zobrazit pouze metadata zabezpečitelných, která uživatel vlastní nebo na kterých má udělená oprávnění. To znamená, že předdefinované funkce pro metadata, například OBJECT_ID můžou vrátit NULL , pokud uživatel nemá k objektu žádná oprávnění. Další informace naleznete v kapitole Konfigurace viditelnosti metadat.

Poznámky

Pokud je parametr systémové funkce volitelný, předpokládá se aktuální databáze, hostitelský počítač, uživatel serveru nebo uživatel databáze. Vždy musíte postupovat podle předdefinovaných funkcí s závorky.

Pokud je zadán dočasný název tabulky, musí název databáze přijít před dočasný název tabulky, pokud aktuální databáze není tempdb. Například:

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

Systémové funkce lze použít v seznamu select, v WHERE klauzuli a kdekoli je povolený výraz. Další informace naleznete v tématu Výrazy (Transact-SQL) a WHERE (Transact-SQL).

Příklady

Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .

A. Vrácení ID objektu pro zadaný objekt

Následující příklad vrátí ID objektu Production.WorkOrder pro tabulku v AdventureWorks2025 databázi.

USE master;
GO

SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO

B. Ověřte, že objekt existuje.

Následující příklad kontroluje existenci zadané tabulky ověřením, že tabulka má ID objektu. Pokud tabulka existuje, odstraní se. Pokud tabulka neexistuje, DROP TABLE příkaz se nespustí.

USE AdventureWorks2022;
GO

IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO

C. Určení hodnoty parametru systémové funkce pomocí OBJECT_ID

Následující příklad vrátí informace pro všechny indexy a oddíly Person.Address tabulky v AdventureWorks2025 databázi pomocí funkce sys.dm_db_index_operational_stats .

Poznámka:

Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Pokud používáte funkce DB_ID Transact-SQL a OBJECT_ID k vrácení hodnoty parametru, vždy se ujistěte, že je vráceno platné ID. Pokud nelze najít název databáze nebo objektu, například pokud neexistují nebo jsou nesprávně napsané, vrátí NULLse obě funkce . Funkce sys.dm_db_index_operational_stats interpretuje NULL jako hodnotu se zástupným znakem, která určuje všechny databáze nebo všechny objekty. Vzhledem k tomu, že tato operace může být neúmyslná, ukazuje příklad v této části bezpečný způsob, jak určit ID databáze a objektů.

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

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

D. Vrácení ID objektu pro zadaný objekt

Následující příklad vrátí ID objektu FactFinance pro tabulku v databázi AdventureWorksPDW2022 .

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