Partage via


sys.dm_exec_query_statistics_xml (Transact-SQL)

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

Renvoie le plan d’exécution de la requête pour les demandes en cours. 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
L’ID de session exécutant le lot à rechercher. session_id est smallint. session_id peut ê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 Showplan d’exécution du plan d’exécution de la requête spécifiée 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

En cas de violation d’accès aléatoire (AV) lors de l’exécution d’une procédure de surveillance stockée avec le DMV sys.dm_exec_query_statistics_xml, la <valeur >ParameterListParameterRuntimeValue de l’attribut XML Showplan 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 >ParameterListParameterRuntimeValue 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é à rester activé en permanence dans un environnement de production. Il doit être activé seulement de façon temporaire à des fins de résolution des problèmes. 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

À partir de SQL Server 2022 (16.x), la base de données Azure SQL et Azure SQL Managed Instance pour effectuer cette opération 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 à compter de SQL Server 2016 (13.x) SP1. Consultez KB 3190871

Cette fonction système fonctionne sous une infrastructure de profilage de 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 atteignent ou dépassent 128 niveaux d’éléments imbriqués. Dans les versions antérieures de SQL Server, cette condition empêchait les retours par le plan de requête et générait 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, requiert l’autorisation VIEW SERVER STATE 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 SQL Database Standard et Basic, nécessite l’Administrateur du serveur ou un compte 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 afin de rechercher la requête qui vous intéresse et de copier son session_id 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 le session_id copié avec 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)