sys.dm_exec_query_statistics_xml (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-DatenbankAzure SQL Managed Instance

Gibt den Abfrageausführungsplan für In-Flight-Anforderungen zurück. Verwenden Sie diesen DMV, um Showplan-XML mit vorübergehenden Statistiken abzurufen.

Syntax

sys.dm_exec_query_statistics_xml(session_id)  

Argumente

session_id
Ist die Sitzungs-ID, die den Batch ausführt, um nachzuschlagen. session_id ist klein. session_id können aus den folgenden dynamischen Verwaltungsobjekten abgerufen werden:

Zurückgegebene Tabelle

Spaltenname Datentyp BESCHREIBUNG
session_id smallint ID der Sitzung. Lässt keine NULL-Werte zu.
request_id int ID der Anforderung. Lässt keine NULL-Werte zu.
sql_handle varbinary(64) Ein Token, das den Batch oder die gespeicherte Prozedur, zu dem bzw. der die Abfrage gehört, eindeutig identifiziert. NULL-Werte sind zulässig.
plan_handle varbinary(64) Ist ein Token, das einen Abfrageausführungsplan für einen aktuell ausgeführten Batch eindeutig identifiziert. NULL-Werte sind zulässig.
query_plan xml Enthält die Showplan-Laufzeitdarstellung des Abfrageausführungsplans, der mit plan_handle mit Teilstatistiken angegeben wird. Der Showplan liegt im XML-Format vor. Für jeden Batch, der z. B. Ad-hoc-Transact-SQL-Anweisungen, Aufrufe von gespeicherten Prozeduren sowie benutzerdefinierte Funktionsaufrufe enthält, wird jeweils ein Plan generiert. NULL-Werte sind zulässig.

Hinweise

Wichtig

Der Besitz einer möglichen Verletzung des zufälligen Zugriffs (AV) beim Ausführen einer gespeicherten Überwachungsprozedur mit DMV sys.dm_exec_query_statistics_xml wurde der Showplan XML-AttributparameterList-Wert <>ParameterRuntimeValue in SQL Server 2017 (14.x) CU 26 und SQL Server 2019 (15.x) CU 12 entfernt. Dieser Wert kann bei der Problembehandlung bei lang ausgeführten gespeicherten Prozeduren hilfreich sein.

Ab SQL Server 2017 (14.x) CU 31 und SQL Server 2019 (15.x) CU 19 wurde die Auflistung des Showplan-AttributparameterList-Werts <>ParameterRuntimeValue mit der Aufnahme des Ablaufverfolgungskennzeichnungs 2446 erneut aktiviert. Dieses Ablaufverfolgungsflagge ermöglicht die Sammlung des Laufzeitparameterwerts zu Kosten der Einführung zusätzlicher Mehraufwand.

Warnung

Ablaufverfolgungskennzeichnung 2446 soll nicht kontinuierlich in einer Produktionsumgebung aktiviert werden, sondern nur für zeitlich begrenzte Problembehandlungszwecke. Das Verwenden dieses Ablaufverfolgungsflags führt zu zusätzlicher und möglicherweise erheblicher CPU- und Speicherauslastung, da ein Showplan-XML-Fragment mit Runtimeparameter-Informationen erstellt wird, unabhängig davon ob die sys.dm_exec_query_statistics_xml-DMV aufgerufen wird oder nicht.

Hinweis

Ab SQL Server 2022 (16.x), Azure SQL-Datenbank und Azure SQL verwaltete Instanz finden Sie auf Datenbankebene die Option FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION in ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).

Diese Systemfunktion ist ab SQL Server 2016 (13.x) SP1 verfügbar. Siehe KB-3190871

Diese Systemfunktion funktioniert sowohl unter der Standard- als auch der einfachen Abfrageausführungsstatistik-Profilerstellungsinfrastruktur. Weitere Informationen finden Sie unter Profilerstellungsinfrastruktur für Abfragen.

Unter den folgenden Bedingungen wird keine Showplan-Ausgabe in der query_plan Spalte der zurückgegebenen Tabelle für sys.dm_exec_query_statistics_xml zurückgegeben:

  • Wenn der Abfrageplan, der dem angegebenen session_id entspricht, nicht mehr ausgeführt wird, ist die query_plan Spalte der zurückgegebenen Tabelle null. Diese Bedingung kann z. B. auftreten, wenn zwischen dem Erfassen des Planhandles und der Verwendung mit sys.dm_exec_query_statistics_xml eine Zeitverzögerung besteht.

Aufgrund einer Einschränkung der Anzahl der im XML-Datentyp zulässigen geschachtelten Ebenen kann sys.dm_exec_query_statistics_xml keine Abfragepläne zurückgeben, die 128 Ebenen geschachtelter Elemente erfüllen oder überschreiten. In früheren Versionen von SQL Server verhinderte diese Bedingung, dass der Abfrageplan zurückgegeben wird und Fehler 6335 generiert. In SQL Server 2005 (9.x) Service Pack 2 und höheren Versionen gibt die query_plan Spalte NULL zurück.

Berechtigungen

Für SQL Server ist die Berechtigung auf dem Server erforderlich VIEW SERVER STATE .
In SQL-Datenbank Premium-Tarifen ist die VIEW DATABASE STATE-Berechtigung für die Datenbank erforderlich. Für SQL-Datenbank Standard- und Standardebenen ist der Serveradministrator oder ein Microsoft Entra-Administratorkonto erforderlich.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

Beispiele

.A Anzeigen von Liveabfrageplan- und Ausführungsstatistiken für einen ausgeführten Batch

Im folgenden Beispiel werden abfragen sys.dm_exec_requests , um die interessante Abfrage zu finden und die Abfrage aus der Ausgabe zu kopieren session_id .

SELECT * FROM sys.dm_exec_requests;  
GO  

Um dann die Live-Abfrageplan- und Ausführungsstatistiken abzurufen, verwenden Sie die kopierte session_id Systemfunktion 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  

Oder kombiniert für alle ausgeführten Anforderungen.

--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

Weitere Informationen

Ablaufverfolgungsflags
Dynamische Verwaltungssichten und Funktionen (Transact-SQL)
Mit der Datenbank verbundene dynamische Verwaltungssichten (Transact-SQL)