Delen via


OBJECT_ID (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Retourneert het id-nummer van het databaseobject van een schemabereikobject.

Objecten die geen schemabereik hebben, zoals DDL-triggers (Data Definition Language), kunnen niet worden opgevraagd met behulp van OBJECT_ID. Voor objecten die niet in de catalogusweergave sys.objects zijn gevonden, haalt u de objectidentificatienummers op door een query uit te voeren op de juiste catalogusweergave. Als u bijvoorbeeld het objectidentificatienummer van een DDL-trigger wilt retourneren, gebruikt u SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'.

Transact-SQL syntaxis-conventies

Syntaxis

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

Argumenten

N'object_name'

Het object dat moet worden gebruikt. object_name is varchar of nvarchar. Een varchar-waarde van object_name wordt impliciet geconverteerd naar nvarchar. Het opgeven van de database- en schemanamen is optioneel.

N'object_type'

Het objecttype met schemabereik. object_type is varchar of nvarchar. Een varchar-waarde van object_type wordt impliciet geconverteerd naar nvarchar. Zie de kolom type in sys.objects (Transact-SQL) voor een lijst met objecttypen.

Retourtypen

int

Uitzonderingen

Retourneert NULLvoor een ruimtelijke indexOBJECT_ID.

Retourneert NULL een fout.

Een gebruiker kan alleen de metagegevens van beveiligbare items bekijken waarvan de gebruiker eigenaar is of waarvoor de gebruiker toestemming krijgt. Dit betekent dat metagegevens die ingebouwde functies verzenden, zoals OBJECT_ID die kunnen worden geretourneerd NULL als de gebruiker geen machtigingen heeft voor het object. Zie Zichtbaarheidsconfiguratie voor metagegevensvoor meer informatie.

Opmerkingen

Wanneer de parameter voor een systeemfunctie optioneel is, wordt ervan uitgegaan dat de huidige database, hostcomputer, servergebruiker of databasegebruiker. U moet altijd ingebouwde functies met haakjes volgen.

Wanneer een tijdelijke tabelnaam is opgegeven, moet de databasenaam vóór de naam van de tijdelijke tabel komen, tenzij de huidige database is tempdb. Voorbeeld:

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

Systeemfuncties kunnen worden gebruikt in de selectielijst, in de WHERE component en overal waar een expressie is toegestaan. Zie Expressies (Transact-SQL) en WHERE (Transact-SQL) voor meer informatie.

Voorbeelden

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022 of AdventureWorksDW2022 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

Eén. De object-id voor een opgegeven object retourneren

In het volgende voorbeeld wordt de object-id voor de Production.WorkOrder tabel in de AdventureWorks2022 database geretourneerd.

USE master;
GO

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

B. Controleren of er een object bestaat

In het volgende voorbeeld wordt gecontroleerd op het bestaan van een opgegeven tabel door te controleren of de tabel een object-id heeft. Als de tabel bestaat, wordt deze verwijderd. Als de tabel niet bestaat, wordt de DROP TABLE instructie niet uitgevoerd.

USE AdventureWorks2022;
GO

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

C. Gebruik OBJECT_ID om de waarde van een systeemfunctieparameter op te geven

In het volgende voorbeeld worden gegevens geretourneerd voor alle indexen en partities van de Person.Address tabel in de AdventureWorks2022 database met behulp van de functie sys.dm_db_index_operational_stats .

Opmerking

Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Wanneer u de Transact-SQL-functies DB_ID gebruikt en OBJECT_ID een parameterwaarde wilt retourneren, moet u er altijd voor zorgen dat er een geldige id wordt geretourneerd. Als de naam van de database of het object niet kan worden gevonden, bijvoorbeeld wanneer ze niet bestaan of onjuist zijn gespeld, worden beide functies geretourneerd NULL. De sys.dm_db_index_operational_stats functie interpreteert NULL als een jokertekenwaarde waarmee alle databases of alle objecten worden opgegeven. Omdat deze bewerking onbedoeld kan zijn, toont het voorbeeld in deze sectie de veilige manier om database- en object-id's te bepalen.

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

Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)

D. De object-id voor een opgegeven object retourneren

In het volgende voorbeeld wordt de object-id voor de FactFinance tabel in de Database AdventureWorksPDW2022 geretourneerd.

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