OBJECT_SCHEMA_NAME (Transact-SQL)
S’applique à : SQL Server base de données Azure SQL Azure SQL Managed Instance Azure Synapse Analytics
Retourne le nom de schéma 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).
Notes
La fonction OBJECT_SCHEMA_NAME
n’est prise en charge que dans les pools SQL dédiés dans Azure Synapse Analytics.
Conventions de la syntaxe Transact-SQL
Syntaxe
OBJECT_SCHEMA_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 dans laquelle l’objet doit être recherché. database_id est un 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. Les fonctions intégrées générant des métadonnées (par exemple OBJECT_SCHEMA_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.
Le jeu de résultats retourné par cette fonction système utilise le classement de la base de données active.
Si database_id n’est pas spécifié, 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 faisant référence à un object_id
figurant dans une autre base de données retourne 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 de schéma d’objet pour la valeur object_id
spécifiée dans la base de données actuelle plutôt que 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.
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id)
FROM master.sys.objects;
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.
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
Exemples
R. Retour du nom de schéma d’objet et du nom d’objet
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
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_statement
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
B. Retour de noms d’objet en trois parties
L’exemple suivant retourne la base de données, le schéma et le nom de tous les objets dans le contexte de la base de données actuelle.
SELECT QUOTENAME(DB_NAME(db_id()))
+ N'.'
+ QUOTENAME(OBJECT_SCHEMA_NAME(object_id, db_id()))
+ N'.'
+ QUOTENAME(OBJECT_NAME(object_id, db_id()))
, *
FROM sys.objects;
GO
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.
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
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