Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databá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'.
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';