Partage via


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_IDde . 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';