Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
A repülés közbeni kérelmek lekérdezés-végrehajtási tervét adja vissza. Ezzel a DMV-vel lekérheti a showplan XML-t átmeneti statisztikákkal.
Szemantika
sys.dm_exec_query_statistics_xml(session_id)
Érvek
session_id
A keresendő köteget végrehajtó munkamenet-azonosító. session_idkis egész szám. session_id a következő dinamikus felügyeleti objektumokból szerezhető be:
Visszaadott tábla
| Oszlop neve | Adattípus | Leírás |
|---|---|---|
session_id |
smallint | A munkamenet azonosítója. Nem null értékű. |
request_id |
int | A kérés azonosítója. Nem null értékű. |
sql_handle |
varbinary(64) | Egy token, amely egyedileg azonosítja a lekérdezés részét képező feladatcsomagot vagy tárolt eljárást. Nullázható. |
plan_handle |
varbinary(64) | Egy jogkivonat, amely egyedileg azonosítja a jelenleg futtatott köteg lekérdezés-végrehajtási tervét. Nullázható. |
query_plan |
xml | Tartalmazza a részleges statisztikákat tartalmazó lekérdezés-végrehajtási terv plan_handle futásidejű Showplan-ábrázolását. A Showplan XML formátumú. Minden olyan köteghez létrehozunk egy csomagot, amely például alkalmi Transact-SQL utasításokat, tárolt eljáráshívásokat és felhasználó által definiált függvényhívásokat tartalmaz. Nullázható. |
Korlátozások
Az SQL Server 2017 (14.x) CU 26 és AZ SQL Server 2019 (15.x) CU 12-ben a Showplan XML attribútum sys.dm_exec_query_statistics_xml értéke <ParameterList> a DMV-vel ParameterRuntimeValue végzett monitorozási tárolt eljárás végrehajtása során véletlenszerű hozzáférés-megsértés (AV) miatt el lett távolítva. Ez az érték hasznos lehet a hosszan futó tárolt eljárások hibaelhárítása során. Ezt az értéket újra engedélyezheti az SQL Server 2017 (14.x) CU 31, az SQL Server 2019 (15.x) CU 19 és újabb verzióiban a 2446-os nyomkövetési jelző használatával. Ez a nyomkövetési jelző lehetővé teszi a futásidejű paraméter értékének gyűjtését a többletterhelés bevezetésének költségén.
Figyelmeztetés
A 2446-os nyomkövetési jelzőt nem szabad folyamatosan engedélyezni éles környezetben, hanem kizárólag időkorlátos hibaelhárítási célokra. A nyomkövetési jelző használata extra és valószínűleg jelentős processzor- és memóriaterhelést eredményez, mivel létrehoz egy Showplan XML-töredéket futtatókörnyezeti paraméterinformációkkal, függetlenül attól, hogy a sys.dm_exec_query_statistics_xml DMV-t meghívják-e.
Az SQL Server 2022 -ben (16.x), az Azure SQL Database-ben és a felügyelt Azure SQL-példányban ugyanezt a funkciót az adatbázis szintjén is elvégezheti az FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTIONALTER DATABASE SCOPED CONFIGURATION (Transact-SQL) lehetőséggel.
Megjegyzések
Ez a rendszerfüggvény az SQL Server 2016 -tól (13.x) és az 1. szervizcsomaggal érhető el. További információ: KB 3190871.
Ez a rendszerfüggvény szabványos és egyszerűsített lekérdezésvégrehajtási statisztikák profilkészítési infrastruktúrája alatt is működik. További információért lásd: lekérdezésprofilozási infrastruktúra.
Az alábbi feltételek mellett nem kerül Showplan-kimenet a visszaadott táblázat query_plan oszlopába sys.dm_exec_query_statistics_xml esetén.
- Ha a megadott session_id megfelelő lekérdezési terv már nem fut, a
query_planvisszaadott tábla oszlopa null értékű. Ez a feltétel például akkor fordulhat elő, ha a tervfogantyú rögzítése és a használat időpontja között időbeli késés áll fennsys.dm_exec_query_statistics_xml
Az XML-adattípusban engedélyezett beágyazott szintek számának korlátozása miatt nem lehet olyan lekérdezésterveket visszaadni, sys.dm_exec_query_statistics_xml amelyek megfelelnek vagy meghaladják a beágyazott elemek 128 szintjét. Az SQL Server korábbi verzióiban ez a feltétel megakadályozta, hogy a lekérdezésterv visszatérjen, és a 6335-ös hibát generálja. Az SQL Server 2005 (9.x) Service Pack 2 és újabb verzióiban az query_plan oszlop ad vissza NULL.
Engedélyek
Engedélyre van szükség VIEW SERVER STATE a kiszolgálón, az SQL Server 2019 -ben (15.x) és a korábbi verziókban.
Engedélyre van szükség VIEW SERVER PERFORMANCE STATE a kiszolgálón, az SQL Server 2022 (16.x) és újabb verzióiban.
Az adatbázis engedélyére VIEW DATABASE STATE van szükség az SQL Database Premium-szintjeihez.
A kiszolgáló rendszergazdájának vagy egy Microsoft Entra-rendszergazdai fióknak kell lennie az SQL Database Standard és az Alapszintű szinteken.
Példák
A. Egy futó köteg élő lekérdezéstervének és végrehajtási statisztikáinak vizsgálata
Az alábbi példa lekérdezésekkel sys.dm_exec_requests megkeresheti az érdekes lekérdezést, és kimásolhatja a session_id kimenetből.
SELECT *
FROM sys.dm_exec_requests;
GO
Ezután az élő lekérdezésterv és a végrehajtási statisztikák beszerzéséhez használja a kimásolt session_id rendszerfüggvényt sys.dm_exec_query_statistics_xml. Futtassa ezt a lekérdezést egy másik munkamenetben, mint az a munkamenet, amelyben a lekérdezés fut.
SELECT * FROM sys.dm_exec_query_statistics_xml(< copied session_id >);
GO
Vagy az összes futó kéréshez kombinálva. Futtassa ezt a lekérdezést egy másik munkamenetben, mint az a munkamenet, amelyben a lekérdezés fut.
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