OBJECT_ID (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Renvoie le numéro d'identification d'un objet de la base de données pour un objet défini avec l'étendue d'un schéma.

Important

Il n'est pas possible d'exécuter des requêtes sur des objets qui ne sont pas définis avec l'étendue d'un schéma, tels que des déclencheurs DDL, en utilisant OBJECT_ID. Pour les objets qui ne figurent pas dans la vue de catalogue sys.objects, vous pouvez obtenir leurs numéros d’identification en interrogeant la vue de catalogue appropriée. Par exemple, pour renvoyer le numéro d’identification d’un déclencheur DDL, utilisez SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog``'.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

'object_name'
Objet à utiliser. object_name est de type varchar ou nvarchar. Si object_name est de type varchar, il est converti implicitement en nvarchar. La spécification des noms de la base de données et du schéma est facultative.

'object_type'
Type de l'objet défini avec l'étendue du schéma. object_type est de type varchar ou nvarchar. Si object_type est de type varchar, il est converti implicitement en nvarchar. Pour obtenir une liste des types d’objets, consultez la colonne type de sys.objects (Transact-SQL).

Types de retour

int

Exceptions

Pour un index spatial, OBJECT_ID retourne la valeur NULL.

Retourne NULL en cas d'erreur.

Un utilisateur peut voir uniquement les métadonnées des éléments sécurisables qui lui appartiennent ou pour lesquels il dispose d'une autorisation. Cela signifie que les fonctions intégrées générant des métadonnées, telles que OBJECT_ID, peuvent retourner la valeur NULL si l'utilisateur ne dispose d'aucune autorisation sur l'objet. Pour plus d'informations, consultez Metadata Visibility Configuration.

Remarques

Quand le paramètre d'une fonction système est facultatif, la base de données active, l'ordinateur hôte, l'utilisateur du serveur ou l'utilisateur de la base de données sont pris implicitement en considération. Les fonctions intégrées doivent toujours être suivies de parenthèses.

Lorsqu’un nom de table temporaire est spécifié, le nom de la base de données doit figurer avant le nom de la table temporaire, à moins que la base de données active soit tempdb. Par exemple : SELECT OBJECT_ID('tempdb..#mytemptable').

Les fonctions système peuvent être utilisées dans la liste de sélection, dans une clause WHERE, et partout où une expression est autorisée. Pour plus d’informations, consultez Expressions (Transact-SQL) et WHERE (Transact-SQL).

Exemples

R. Renvoi de l'identificateur d'un objet spécifié

L’exemple suivant renvoie l’ID d’objet pour la table Production.WorkOrder dans la base de données AdventureWorks2022.

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

B. Vérification de l'existence d'un objet

L'exemple suivant vérifie l'existence d'une table spécifiée en vérifiant que la table a un identificateur d'objet. Si la table existe, elle est supprimée. Si elle n'existe pas, l'instruction DROP TABLE n'est pas exécutée.

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

C. Utilisation de OBJECT_ID pour spécifier la valeur d'un paramètre d'une fonction système

L’exemple suivant retourne des informations pour tous les index et partitions de la table Person.Address dans la base de données AdventureWorks2022 à l’aide de la fonction sys.dm_db_index_operational_stats.

Remarque

Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Important

Lorsque vous utilisez les fonctions Transact-SQL DB_ID et OBJECT_ID pour obtenir la valeur d'un paramètre, assurez-vous toujours que l'ID retourné est valide. Si le nom de la base de données ou de l'objet est introuvable, par exemple s'il n'existe pas ou n'est pas correctement orthographié, les deux fonctions retournent la valeur NULL. La fonction sys.dm_db_index_operational_stats interprète la valeur NULL comme une valeur générique qui désigne toutes les bases de données ou tous les objets. Comme il peut s'agir d'une opération non intentionnelle, les exemples fournis dans cette section présentent une méthode sûre pour déterminer les ID de base de données et d'objet.

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  

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

D. Renvoi de l’identificateur d’un objet spécifié

L’exemple suivant retourne l’ID d’objet pour la table FactFinance de la base de données AdventureWorksPDW2022.

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

Voir aussi

Fonctions de métadonnées (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_NAME (Transact-SQL)