Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-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 NULL
voor 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';