sys.dm_exec_query_statistics_xml (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed Instance

Retourne le plan d’exécution des requêtes en cours d’exécution. Utilisez cette vue DMV pour récupérer showplan XML avec des statistiques temporaires.

Syntaxe

sys.dm_exec_query_statistics_xml(session_id)  

Arguments

session_id
ID de session exécutant le lot à rechercher. session_id est petit. session_id pouvez être obtenu à partir des objets de gestion dynamique suivants :

Table retournée

Nom de la colonne Type de données Description
session_id smallint ID de la session. N'accepte pas la valeur NULL.
request_id int ID de la demande. N'accepte pas la valeur NULL.
sql_handle varbinary(64) Jeton identifiant de manière unique le traitement ou la procédure stockée dont fait partie la requête. Autorise la valeur Null.
plan_handle varbinary(64) Jeton identifiant de manière unique un plan d’exécution de requête pour un lot en cours d’exécution. Autorise la valeur Null.
query_plan xml Contient la représentation du plan d’exécution du runtime du plan d’exécution de requête spécifié avec plan_handle contenant des statistiques partielles. Le plan d'exécution de requêtes est au format XML. Un plan est généré pour chaque lot contenant par exemple des instructions Transact-SQL ad hoc, des appels de procédures stockées et des appels de fonctions définies par l'utilisateur. Autorise la valeur Null.

Notes

Important

Propriétaire d’une violation d’accès aléatoire (AV) possible lors de l’exécution d’une procédure stockée de surveillance avec la sys.dm_exec_query_statistics_xml DMV, la valeur ParameterRuntimeValue ParameterList> de l’attribut <Showplan XML a été supprimée dans SQL Server 2017 (14.x) CU 26 et SQL Server 2019 (15.x) CU 12. Cette valeur peut être utile lors de la résolution des problèmes de procédures stockées longues.

À compter de SQL Server 2017 (14.x) CU 31 et SQL Server 2019 (15.x) CU 19, la collection de la valeur ParameterRuntimeValue ParameterList> de l’attribut <XML Showplan a été réactivé avec l’inclusion de l’indicateur de trace 2446. Cet indicateur de trace permet la collecte de la valeur du paramètre runtime au coût de l’introduction d’une surcharge supplémentaire.

Avertissement

L’indicateur de trace 2446 n’est pas destiné à être activé en continu dans un environnement de production, mais uniquement à des fins de résolution des problèmes limitées dans le temps. L’utilisation de cet indicateur de trace introduit une surcharge supplémentaire et possiblement significative pour le processeur et la mémoire, car nous allons créer un fragment XML Showplan avec des informations de paramètre d’exécution, que la vue de gestion dynamique sys.dm_exec_query_statistics_xml soit ou non appelée.

Remarque

À compter de SQL Server 2022 (16.x), Azure SQL Database et Azure SQL Managed Instance, pour y parvenir au niveau de la base de données, consultez l’option FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION dans ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).

Cette fonction système est disponible à partir de SQL Server 2016 (13.x) SP1. Voir Ko 3190871

Cette fonction système fonctionne sous l’infrastructure de profilage des statistiques d’exécution de requêtes standard et légère . Pour plus d’informations, consultez Infrastructure du profilage de requête.

Dans les conditions suivantes, aucune sortie showplan n’est retournée dans la colonne query_plan de la table retournée pour sys.dm_exec_query_statistics_xml :

  • Si le plan de requête qui correspond au session_id spécifié n’est plus en cours d’exécution, la colonne query_plan de la table retournée est Null. Par exemple, cette condition peut se produire s’il existe un délai entre le moment où le handle de plan a été capturé et lorsqu’il a été utilisé avec sys.dm_exec_query_statistics_xml.

En raison d’une limitation du nombre de niveaux imbriqués autorisés dans le type de données xml , sys.dm_exec_query_statistics_xml ne peut pas retourner les plans de requête qui répondent ou dépassent 128 niveaux d’éléments imbriqués. Dans les versions antérieures de SQL Server, cette condition empêchait le plan de requête de retourner et génère l’erreur 6335. Dans SQL Server 2005 (9.x) Service Pack 2 et versions ultérieures, la colonne query_plan retourne NULL.

Autorisations

Sur SQL Server, vous devez disposer VIEW SERVER STATE d’une autorisation sur le serveur.
Sur les niveaux Premium de SQL Database, nécessite l’autorisation VIEW DATABASE STATE dans la base de données. Sur les niveaux Standard et De base de SQL Database, vous devez disposer de l’administrateur du serveur ou d’un compte d’administrateur Microsoft Entra.

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

Exemples

R. Examiner les statistiques d’exécution et de plan de requête en direct pour un lot en cours d’exécution

L’exemple suivant interroge sys.dm_exec_requests pour rechercher la requête intéressante et la copier session_id à partir de la sortie.

SELECT * FROM sys.dm_exec_requests;  
GO  

Ensuite, pour obtenir le plan de requête en direct et les statistiques d’exécution, utilisez la copie avec session_id la fonction système sys.dm_exec_query_statistics_xml.

--Run this in a different session than the session in which your query is running.
SELECT * FROM sys.dm_exec_query_statistics_xml(< copied session_id >);  
GO  

Ou combiné pour toutes les requêtes en cours d’exécution.

--Run this in a different session than the session in which your query is running.
SELECT 
	eqs.query_plan, 
	er.session_id, 
	er.request_id, 
	er.database_id,
	er.start_time,
	er.[status], 
	er.wait_type,
	er.wait_resource, 
	er.last_wait_type,
	(er.cpu_time/1000) AS cpu_time_sec,
	(er.total_elapsed_time/1000)/60 AS elapsed_time_minutes,
	(er.logical_reads*8)/1024 AS logical_reads_KB,
	er.granted_query_memory,
	er.dop,
	er.row_count, 
	er.query_hash, 
	er.query_plan_hash
FROM sys.dm_exec_requests er
	CROSS APPLY sys.dm_exec_query_statistics_xml(session_id) eqs
WHERE er.session_id <> @@spid;
GO

Voir aussi

Indicateurs de trace
Fonctions et vues de gestion dynamique (Transact-SQL)
Vues de gestion dynamique liées aux bases de données (Transact-SQL)