Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
Returnerar databasobjektidentifieringsnumret för ett schemaomfattande objekt.
Objekt som inte är schemaomfattande, till exempel DDL-utlösare (Data Definition Language), kan inte frågas med hjälp OBJECT_IDav . För objekt som inte finns i katalogvyn sys.objects hämtar du objektidentifieringsnumren genom att fråga rätt katalogvy. Om du till exempel vill returnera objektidentifieringsnumret för en DDL-utlösare använder du SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'.
Transact-SQL syntaxkonventioner
Syntax
OBJECT_ID ( ' [ database_name . [ schema_name ] . | schema_name . ]
object_name' [ , 'object_type' ] )
Argumentpunkter
N'object_name'
Det objekt som ska användas. object_name är antingen varchar eller nvarchar. Ett varchar-värdeför object_name konverteras implicit till nvarchar. Det är valfritt att ange databas- och schemanamn.
N'object_type'
Objekttypen schemaomfattning. object_type är antingen varchar eller nvarchar. Ett varchar-värdeför object_type konverteras implicit till nvarchar. En lista över objekttyper finns i typkolumnen i sys.objects (Transact-SQL).
Returtyper
int
Exceptions
För ett rumsligt index OBJECT_ID returnerar NULL.
Returnerar NULL vid fel.
En användare kan bara visa metadata för skyddsbara objekt som användaren äger eller som användaren beviljas behörighet för. Det innebär att metadatautsändande, inbyggda funktioner som OBJECT_ID kan returneras NULL om användaren inte har någon behörighet för objektet. För mer information, se inställningar för metadatasynlighet.
Anmärkningar
När parametern till en systemfunktion är valfri antas den aktuella databasen, värddatorn, serveranvändaren eller databasanvändaren. Du måste alltid följa inbyggda funktioner med parenteser.
När ett tillfälligt tabellnamn anges måste databasnamnet komma före det tillfälliga tabellnamnet, såvida inte den aktuella databasen är tempdb. Till exempel:
SELECT OBJECT_ID('tempdb..#mytemptable');
Systemfunktioner kan användas i urvalslistan, i WHERE -satsen och var som helst där ett uttryck tillåts. Mer information finns i Uttryck (Transact-SQL) och WHERE (Transact-SQL).
Exempel
Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
A. Returnera objekt-ID:t för ett angivet objekt
I följande exempel returneras objekt-ID:t för Production.WorkOrder tabellen i AdventureWorks2022 databasen.
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO
B. Kontrollera att ett objekt finns
I följande exempel kontrolleras förekomsten av en angiven tabell genom att kontrollera att tabellen har ett objekt-ID. Om tabellen finns tas den bort. Om tabellen inte finns körs inte -instruktionen DROP TABLE .
USE AdventureWorks2022;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO
C. Använd OBJECT_ID för att ange värdet för en systemfunktionsparameter
I följande exempel returneras information för alla index och partitioner i Person.Address tabellen i AdventureWorks2022 databasen med hjälp av funktionen sys.dm_db_index_operational_stats .
Anmärkning
Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.
När du använder Transact-SQL-funktionerna DB_ID och OBJECT_ID returnerar ett parametervärde kontrollerar du alltid att ett giltigt ID returneras. Om databasen eller objektnamnet inte kan hittas, till exempel när de inte finns eller stavas felaktigt, returnerar NULLbåda funktionerna . Funktionen sys.dm_db_index_operational_stats tolkas NULL som ett jokerteckenvärde som anger alla databaser eller alla objekt. Eftersom den här åtgärden kan vara oavsiktlig visar exemplet i det här avsnittet det säkra sättet att fastställa databas- och objekt-ID:t.
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
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
D. Returnera objekt-ID:t för ett angivet objekt
I följande exempel returneras objekt-ID:t för FactFinance tabellen i databasen AdventureWorksPDW2022 .
SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';