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)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für