Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för: SQL Server 2016 (13.x) och senare
Azure SQL Database
Azure SQL Managed Instance
Returnerar frågekörningsplan för begäranden under flygning. Använd den här DMV:en för att hämta showplan-XML med tillfällig statistik.
Syntax
sys.dm_exec_query_statistics_xml(session_id)
Argumentpunkter
session_id
Sessions-ID:n som kör batchen som ska letas upp. session_id är småint. session_id kan hämtas från följande dynamiska hanteringsobjekt:
Tabellen returneras
Kolumnnamn | Datatyp | Beskrivning |
---|---|---|
session_id |
smallint | ID för sessionen. Inte nullbar. |
request_id |
int | ID för begäran. Inte nullbar. |
sql_handle |
varbinary(64) | En token som unikt identifierar den batch eller lagrade procedur som frågan ingår i. Nullbar. |
plan_handle |
varbinary(64) | En token som unikt identifierar en frågekörningsplan för en batch som körs för närvarande. Nullbar. |
query_plan |
xml | Innehåller runtime Showplan-representationen av frågekörningsplanen som anges med plan_handle , och som innehåller partiell statistik. Showplan är i XML-format. En plan genereras för varje batch som innehåller till exempel ad hoc-Transact-SQL-instruktioner, lagrade proceduranrop och användardefinierade funktionsanrop. Nullbar. |
Begränsningar
På grund av en eventuell slumpmässig åtkomstkränkning (AV) vid körning av en övervakningslagrad procedur med sys.dm_exec_query_statistics_xml
DMV togs Showplan XML-attributet <ParameterList>
-värde ParameterRuntimeValue
bort i SQL Server 2017 (14.x) CU 26 och SQL Server 2019 (15.x) CU 12. Det här värdet kan vara användbart när du felsöker tidskrävande lagrade procedurer. Du kan återaktivera det här värdet i SQL Server 2017 (14.x) CU 31, SQL Server 2019 (15.x) CU 19 och senare versioner med hjälp av Spårningsflagga 2446. Den här spårningsflaggan möjliggör insamling av körningsparametervärdet på bekostnad av extra omkostnader.
Försiktighet
Spårningsflagga 2446 är inte avsedd att aktiveras kontinuerligt i en produktionsmiljö, utan endast för tidsbegränsade felsökningsändamål. Med den här spårningsflaggan introduceras extra och möjligen betydande processor- och minnesomkostnader, eftersom det skapar ett Showplan XML-fragment med körningsparameterinformation, oavsett om sys.dm_exec_query_statistics_xml
DMV anropas eller inte.
I SQL Server 2022 (16.x), Azure SQL Database och Azure SQL Managed Instance kan du utföra samma funktioner på databasnivå med hjälp av FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION
alternativet i ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).
Anmärkningar
Den här systemfunktionen är tillgänglig från och med SQL Server 2016 (13.x) med Service Pack 1. Mer information finns i KB-3190871.
Den här systemfunktionen fungerar under både standard - och lättviktsinfrastrukturen för frågekörningsstatistikprofilering. Mer information finns i infrastruktur för frågeprofilering.
Under följande villkor returneras inga Showplan-utdata i kolumnen i query_plan
den returnerade tabellen för sys.dm_exec_query_statistics_xml
:
- Om frågeplanen som motsvarar den angivna session_id inte längre körs är kolumnen i
query_plan
den returnerade tabellen null. Det här villkoret kan till exempel inträffa om det finns en tidsfördröjning mellan när planhandtaget registrerades och när det användes medsys.dm_exec_query_statistics_xml
På grund av en begränsning i antalet kapslade nivåer som tillåts i xml-datatypen kan sys.dm_exec_query_statistics_xml
det inte returnera frågeplaner som uppfyller eller överskrider 128 nivåer av kapslade element. I tidigare versioner av SQL Server hindrade det här villkoret frågeplanen från att returneras och genererar fel 6335. I SQL Server 2005 (9.x) Service Pack 2 och senare versioner query_plan
returnerar NULL
kolumnen .
Behörigheter
Kräver VIEW SERVER STATE
behörighet på servern, i SQL Server 2019 (15.x) och tidigare versioner.
Kräver VIEW SERVER PERFORMANCE STATE
behörighet på servern, i SQL Server 2022 (16.x) och senare versioner.
Kräver behörigheten VIEW DATABASE STATE
i databasen på SQL Database Premium-nivåer.
Kräver serveradministratören eller ett Microsoft Entra-administratörskonto på SQL Database Standard- och Basic-nivåer.
Exempel
A. Titta på live-frågeplan och körningsstatistik för en batch som körs
I följande exempel frågar sys.dm_exec_requests
du efter den intressanta frågan och kopierar den session_id
från utdata.
SELECT *
FROM sys.dm_exec_requests;
GO
För att hämta live-frågeplanen och körningsstatistiken använder du sedan den kopierade session_id
med systemfunktionen sys.dm_exec_query_statistics_xml
. Kör den här frågan i en annan session än den session där frågan körs.
SELECT * FROM sys.dm_exec_query_statistics_xml(< copied session_id >);
GO
Eller kombinerat för alla begäranden som körs. Kör den här frågan i en annan session än den session där frågan körs.
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 AS er
CROSS APPLY sys.dm_exec_query_statistics_xml(session_id) AS eqs
WHERE er.session_id <> @@SPID;
GO