OBJECT_ID (Transact-SQL)
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 se trouvent pas dans la vue de catalogue sys.objects, vous pouvez obtenir leurs numéros d'identification en effectuant une requête dans 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'.
Syntaxe
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
Arguments
'object_name'
Objet à utiliser. object_name est de type varchar ou nvarchar. Si object_name est de type varchar, il est implicitement converti en type 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 implicitement converti en type nvarchar. Pour obtenir la liste des types d'objets, consultez la colonne type de sys.objects (Transact-SQL).
Types renvoyés
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 Configuration de la visibilité des métadonnées et Dépannage de la visibilité des métadonnées.
Notes
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
A. Renvoi de l'identificateur d'un objet spécifié
L'exemple suivant renvoie l'ID d'objet de la table Production.WorkOrder de la base de données AdventureWorks2008R2.
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2008R2.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 AdventureWorks2008R2;
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 AdventureWorks2008R2 à l'aide de la fonction sys.dm_db_index_operational_stats.
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'AdventureWorks2008R2');
SET @object_id = OBJECT_ID(N'AdventureWorks2008R2.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