OBJECT_NAME (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Retourne le nom d'objet de base de données des objets de portée de schéma. Pour obtenir la liste de tous les objets étendus aux schémas, consultez sys.objects (Transact-SQL).

Conventions de la syntaxe Transact-SQL

Syntaxe

OBJECT_NAME ( object_id [, database_id ] )  

Arguments

object_id
ID de l'objet à utiliser. object_id est de type int et est supposé être un objet étendu aux schémas dans le contexte de la base de données spécifiée ou de la base de données active.

database_id
ID de la base de données où l’objet est à rechercher. database_id est int.

Types de retour

sysname

Exceptions

Retourne la valeur NULL en cas d'erreur ou si un appelant n'est pas autorisé à afficher l'objet. Si l'option AUTO_CLOSE de la base de données cible a pour valeur ON, la fonction ouvre la base de données.

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_NAME, peuvent retourner la valeur NULL si l'utilisateur ne dispose d'aucune autorisation sur l'objet. Pour plus d'informations, consultez Metadata Visibility Configuration.

Autorisations

Nécessite l'autorisation ANY sur l'objet. Pour spécifier un ID de base de données, l'autorisation CONNECT à la base de données est également nécessaire ou le compte Invité doit être activé.

Notes

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 et WHERE.

La valeur retournée par cette fonction système utilise le classement de la base de données active.

Par défaut, le Moteur de base de données SQL Server considère que object_id se trouve dans le contexte de la base de données active. Une requête référençant un object_id dans une autre base de données renvoie la valeur NULL ou des résultats incorrects. Dans la requête suivante par exemple, le contexte de la base de données active est AdventureWorks2022. Le Moteur de base de données essaie de retourner un nom d’objet pour l’ID d’objet spécifié dans cette base de données et non dans la base de données indiquée dans la clause FROM de la requête. Par conséquent, des informations incorrectes sont retournées.

USE AdventureWorks2022;  
GO  
SELECT DISTINCT OBJECT_NAME(object_id)  
FROM master.sys.objects;  
GO  

Vous pouvez résoudre les noms d'objet dans le contexte d'une autre base de données en spécifiant un ID de base de données. L'exemple suivant spécifie l'ID de base de données pour la base de données master dans la fonction OBJECT_SCHEMA_NAME et retourne les résultats corrects.

USE AdventureWorks2022;  
GO  
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name  
FROM master.sys.objects;  
GO  

Exemples

R. Utilisation d'OBJECT_NAME dans une clause WHERE

L'exemple suivant retourne les colonnes de l'affichage catalogue sys.objects correspondant à l'objet spécifié par OBJECT_NAME dans la clause WHERE de l'instruction SELECT.

USE AdventureWorks2022;  
GO  
DECLARE @MyID INT;  
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2022.Production.Product',  
    'U'));  
SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(@MyID);  
GO  

B. Retour du nom de schéma d'objet et du nom d'objet

L'exemple suivant retourne le nom de schéma d'objet, le nom d'objet et le texte SQL pour tous les plans de requête mis en cache qui ne sont pas des instructions ad hoc ou préparées.

SELECT DB_NAME(st.dbid) AS database_name,   
    OBJECT_SCHEMA_NAME(st.objectid, st.dbid) AS schema_name,  
    OBJECT_NAME(st.objectid, st.dbid) AS object_name,   
    st.text AS query_text  
FROM sys.dm_exec_query_stats AS qs  
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st  
WHERE st.objectid IS NOT NULL;  
GO  

C. Retour de noms d'objet en trois parties

L'exemple suivant retourne le nom d'objet, de schéma et de base de données ainsi que toutes les autres colonnes dans la vue de gestion dynamique sys.dm_db_index_operational_stats pour tous les objets de l'ensemble des bases de données.

SELECT QUOTENAME(DB_NAME(database_id))   
    + N'.'   
    + QUOTENAME(OBJECT_SCHEMA_NAME(object_id, database_id))   
    + N'.'   
    + QUOTENAME(OBJECT_NAME(object_id, database_id))  
    , *   
FROM sys.dm_db_index_operational_stats(NULL, NULL, NULL, NULL);  
GO  

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

D. Utilisation d'OBJECT_NAME dans une clause WHERE

L'exemple suivant retourne les colonnes de l'affichage catalogue sys.objects correspondant à l'objet spécifié par OBJECT_NAME dans la clause WHERE de l'instruction SELECT. (Votre numéro d’objet (274100017 dans l’exemple ci-dessous) sera différent. Pour tester cet exemple, recherchez un numéro d’objet valide en exécutant SELECT name, object_id FROM sys.objects; dans votre base de données.)

SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(274100017);  

Voir aussi

Fonctions de métadonnées (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)