OBJECT_ID (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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.
Les objets qui ne sont pas délimités par un schéma, tels que les déclencheurs DDL (Data Definition Language), ne peuvent pas être interrogés à l’aide OBJECT_ID
de . Pour les objets qui ne se trouvent pas dans la vue catalogue sys.objects , obtenez les numéros d’identification d’objet en interrogeant l’affichage catalogue approprié. 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' ] )
Arguments
N’object_name'
Objet à utiliser. object_name est de type varchar ou nvarchar. Une valeur varchar de object_name est implicitement convertie en nvarchar. La spécification des noms de la base de données et du schéma est facultative.
N’object_type'
Type d’objet délimité par le schéma. object_type est de type varchar ou nvarchar. Une valeur varchar de object_type est implicitement convertie 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 NULL
.
Retourne une NULL
erreur.
Un utilisateur peut uniquement afficher les métadonnées des éléments sécurisables que l’utilisateur possède ou sur lequel l’utilisateur est autorisé. Cela signifie que les fonctions intégrées émettrices de métadonnées, telles que OBJECT_ID
peuvent retourner NULL
si l’utilisateur n’a pas d’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. Vous devez toujours suivre les fonctions intégrées avec des parenthèses.
Lorsqu’un nom de table temporaire est spécifié, le nom de la base de données doit être antérieur au nom de la table temporaire, sauf si la base de données active est tempdb
. Par exemple :
SELECT OBJECT_ID('tempdb..#mytemptable');
Les fonctions système peuvent être utilisées dans la liste de sélection, dans la WHERE
clause et n’importe où une expression est autorisée. Pour plus d’informations, consultez Expressions (Transact-SQL) et WHERE (Transact-SQL).
Exemples
Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022
ou AdventureWorksDW2022
fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.
A. Retourner l’ID d’objet d’un objet spécifié
L'exemple suivant renvoie l'ID d'objet de la table Production.WorkOrder
de la base de données AdventureWorks2022
.
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO
B. Vérifier qu’un objet existe
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 la table 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. Utilisez OBJECT_ID pour spécifier la valeur d’un paramètre de 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.
Lorsque vous utilisez les fonctions DB_ID
Transact-SQL et OBJECT_ID
que vous retournez une valeur de paramètre, vérifiez toujours qu’un ID valide est retourné. Si le nom de la base de données ou de l’objet n’est pas trouvé, par exemple s’ils n’existent pas ou sont orthographiés de manière incorrecte, les deux fonctions retournent NULL
. La sys.dm_db_index_operational_stats
fonction interprète NULL
comme une valeur générique qui spécifie toutes les bases de données ou tous les objets. Étant donné que cette opération peut être involontaire, l’exemple de cette section illustre le moyen sûr de 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. Retourner l’ID d’objet 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';