Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Vrátí plán provádění dotazů pro požadavky na letu. Pomocí této DMV načtěte XML Showplanu s přechodnými statistikami.
Syntaxe
sys.dm_exec_query_statistics_xml(session_id)
Arguments
session_id
ID relace, které spouští dávku, jež má být vyhledána. session_id je typu smallint. session_id lze získat z následujících objektů dynamické správy:
Vrácená tabulka
| Název sloupce | Datový typ | Popis |
|---|---|---|
session_id |
smallint | ID relace. Není nulovatelný. |
request_id |
int | ID požadavku. Není nulovatelný. |
sql_handle |
varbinary(64) | Token, který jednoznačně identifikuje dávku nebo uloženou proceduru, na které je dotaz součástí. Nullable. |
plan_handle |
varbinary(64) | Token, který jednoznačně identifikuje plán provádění dotazů pro dávku, která se právě spouští. Nullable. |
query_plan |
xml | Obsahuje reprezentaci plánu provádění dotazu zadanou s částečnými plan_handle statistikami modulu runtime Showplan. Showplan je ve formátu XML. Jeden plán se vygeneruje pro každou dávku, která obsahuje například ad hoc příkazy Transact-SQL, volání uložených procedur a volání funkcí definovaná uživatelem. Nullable. |
Omezení
Vzhledem k možnému narušení náhodného přístupu (AV) při provádění monitorovací uložené procedury s sys.dm_exec_query_statistics_xml DMV byla hodnota <ParameterList> atributu ParameterRuntimeValue Showplan XML odebrána v SQL Serveru 2017 (14.x) CU 26 a SQL Server 2019 (15.x) CU 12. Tato hodnota může být užitečná při řešení potíží s dlouhotrvajícími uloženými procedurami. Tuto hodnotu můžete znovu povolit v SQL Serveru 2017 (14.x) CU 31, SQL Serveru 2019 (15.x) CU 19 a novějších verzích pomocí příznaku trasování 2446. Tento příznak trasování umožňuje shromažďování hodnoty parametru modulu runtime za cenu zavedení dodatečné režie.
Upozornění
Příznak trasování 2446 není určen k nepřetržitému povolení v produkčním prostředí, ale pouze pro časově omezené účely řešení potíží. Použití tohoto příznaku trasování představuje dodatečné a pravděpodobně významné režijní náklady na procesor a paměť, protože vytváří fragment Showplan XML s informacemi o runtime parametrech, ať už je sys.dm_exec_query_statistics_xml DMV volán, nebo ne.
V SQL Serveru 2022 (16.x), Azure SQL Database a Azure SQL Managed Instance můžete dosáhnout stejného efektu na úrovni databáze pomocí možnosti FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION v ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).
Poznámky
Tato systémová funkce je dostupná od SQL Serveru 2016 (13.x) s aktualizací Service Pack 1. Pro více informací si přečtěte KB 3190871.
Tato systémová funkce funguje ve standardní i zjednodušené infrastruktuře profilace statistik provádění dotazů. Další informace najdete v tématu Infrastruktura profilace dotazů.
Za následujících podmínek se ve query_plan sloupci vrácené tabulky nevrátí žádný výstup Showplan pro sys.dm_exec_query_statistics_xml:
- Pokud plán dotazu odpovídající zadanému session_id již není spuštěn,
query_plansloupec vrácené tabulky má hodnotu null. K této podmínce může dojít například v případě, že došlo k časovému zpoždění mezi zachycením popisovače plánu a jeho použitím ssys.dm_exec_query_statistics_xml
Kvůli omezení počtu vnořených úrovní povolených v datovém typu XML nejdou vracet plány dotazů, sys.dm_exec_query_statistics_xml které splňují nebo překračují 128 úrovní vnořených prvků. V dřívějších verzích SQL Serveru tato podmínka zabránila vrácení plánu dotazu a vygenerování chyby 6335. V systému SQL Server 2005 (9.x) Service Pack 2 a novějších verzích query_plan vrátí NULLsloupec .
Dovolení
Vyžaduje VIEW SERVER STATE oprávnění na serveru, v SQL Serveru 2019 (15.x) a starších verzích.
Vyžaduje VIEW SERVER PERFORMANCE STATE oprávnění na serveru, v SQL Serveru 2022 (16.x) a novějších verzích.
VIEW DATABASE STATE Vyžaduje oprávnění v databázi na úrovních PREMIUM služby SQL Database.
Vyžaduje účet správce serveru nebo správce Microsoft Entra na úrovních Standard a Basic služby SQL Database.
Příklady
A. Podívejte se na živý plán dotazu a statistiky provádění pro právě spuštěnou dávku.
Následující ukázkové sys.dm_exec_requests dotazy najdou zajímavý dotaz a zkopírují ho session_id z výstupu.
SELECT *
FROM sys.dm_exec_requests;
GO
Potom k získání živého plánu dotazu a statistiky provádění použijte zkopírovanou session_id s systémovou funkcí sys.dm_exec_query_statistics_xml. Spusťte tento dotaz v jiné relaci, než je relace, ve které je dotaz spuštěný.
SELECT * FROM sys.dm_exec_query_statistics_xml(< copied session_id >);
GO
Nebo spojte všechny probíhající požadavky. Spusťte tento dotaz v jiné relaci, než je relace, ve které je dotaz spuštěný.
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
Související obsah
- Nastavení příznaků trasování pomocí DBCC TRACEON (Transact-SQL)
- zobrazení dynamické správy systému
- Zobrazení dynamické správy související s databází (Transact-SQL)