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.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Visszaadja az SQL batch szövegét, amelyet a megadott sql_handle azonosít. Ez a táblázatértékű függvény a fn_get_sql rendszerfüggvényt váltja fel.
Szemantika
sys.dm_exec_sql_text(sql_handle | plan_handle)
Arguments
sql_handle
Ez egy token, amely egyedien azonosítja azt a sorozatot, amely már teljesített vagy éppen fut.
sql_handlevarbináris(64).
A sql_handle a következő dinamikus menedzsment objektumokból származhatunk:
plan_handle
Ez egy token, amely egyedien azonosítja egy lekérdezés végrehajtási tervet egy olyan tételre, amely már teljesített, és a terve a terv gyorsítótárában van, vagy éppen teljesít.
plan_handlevarbinary(64).
A plan_handle a következő dinamikus felügyeleti objektumokból szerezhető be:
Visszaadott tábla
| Oszlop név | Adattípus | Description |
|---|---|---|
| dbid | smallint | Az adatbázis azonosítója. Statikus SQL esetén egy tárolt eljárásban az adatbázis azonosítója, amely tartalmazza a tárolt eljárást. Ellenkező esetben null értékű. |
| objectid azonosító | int | Tárgy azonosítója. Is NULL ad hoc és prepared SQL utasításokhoz. |
| szám | smallint | Egy számozott tárolt eljárás esetén ez az oszlop adja vissza a tárolt eljárás számát. További információért lásd sys.numbered_procedures (Transact-SQL). Is NULL ad hoc és prepared SQL utasításokhoz. |
| Titkosított | bit | 1 = SQL szöveg titkosított. 0 = SQL szöveg nincs titkosítva. |
| text | nvarchar(max) | Az SQL lekérdezés szövege. Null a titkosított objektumok esetén. |
Permissions
Engedélyre van szükség VIEW SERVER STATE a kiszolgálón.
Engedélyek az SQL Server 2022-hez és újabb verziókhoz
A KISZOLGÁLÓ TELJESÍTMÉNYÁLLAPOTÁNAK MEGTEKINTÉSE engedélyre van szükség a kiszolgálón.
Megjegyzések
Ad hoc lekérdezéseknél az SQL handle hash-értékek a szerverhez beküldött SQL szöveg alapján készülnek, és bármely adatbázisból származhatnak.
Adatbázis objektumoknál, mint például tárolt eljárások, triggerek vagy függvények, az SQL handle az adatbázis azonosítójából, objektumazonosítóból és objektumszámból származnak.
A terv handle egy hash érték, amely az egész tétel lefordított tervéből származik.
Megjegyzés:
A DBID nem lehet sql_handle alapján meghatározni ad hoc lekérdezéseknél. Az ad hoc lekérdezések dbid meghatározásához használd helyette a plan_handle-t .
Példák
A. Fogalmi példa
Az alábbiakban egy alapvető példa látható, hogy egy sql_handle közvetlenül vagy CROSS APPLY használatával lehet átadni.
Hozz létre tevékenységet.
A következő T-SQL-t egy új lekérdezési ablakban hajtsd végre az SQL Server Management Studio-ban.-- Identify current spid (session_id) SELECT @@SPID; GO -- Create activity WAITFOR DELAY '00:02:00';CROSS APPLY használatával.
A sys.dm_exec_requests sql_handle a CROSS APPLY segítségével kerül át sys.dm_exec_sql_text-nek. Nyiss új lekérdezési ablakot, és add át az 1. lépésben azonosított spid-et. Ebben a példában a spid véletlenül59.SELECT t.* FROM sys.dm_exec_requests AS r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t WHERE session_id = 59 -- modify this value with your actual spidÁtengedni sql_handle egyenesen.
Szerezd meg a sql_handlesys.dm_exec_requests-től. Ezután add át a sql_handle közvetlenül sys.dm_exec_sql_text-nek. Nyiss új lekérdezési ablakot, és add át az 1. lépésben azonosított spid-et sys.dm_exec_requests-nek. Ebben a példában a spid véletlenül59. Ezután add át a visszaküldött sql_handle érvként sys.dm_exec_sql_text.-- acquire sql_handle SELECT sql_handle FROM sys.dm_exec_requests WHERE session_id = 59 -- modify this value with your actual spid -- pass sql_handle to sys.dm_exec_sql_text SELECT * FROM sys.dm_exec_sql_text(0x01000600B74C2A1300D2582A2100000000000000000000000000000000000000000000000000000000000000) -- modify this value with your actual sql_handle
B. Információt szerezzen az öt legfontosabb lekérdezésről az átlagos CPU idő szerint
A következő példa az SQL utasítás szövegét és az öt legfontosabb lekérdezés átlagos CPU-idejét adja vissza.
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;
C. Csomagos végrehajtási statisztikák biztosítása
Az alábbi példa az SQL lekérdezések szövegét adja vissza, amelyeket kötetekben hajtanak végre, és statisztikai információkat szolgáltatnak róluk.
SELECT s2.dbid,
s1.sql_handle,
(SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 ,
( (CASE WHEN statement_end_offset = -1
THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)
ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement,
execution_count,
plan_generation_num,
last_execution_time,
total_worker_time,
last_worker_time,
min_worker_time,
max_worker_time,
total_physical_reads,
last_physical_reads,
min_physical_reads,
max_physical_reads,
total_logical_writes,
last_logical_writes,
min_logical_writes,
max_logical_writes
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
WHERE s2.objectid is null
ORDER BY s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset;
Lásd még
Dinamikus felügyeleti nézetek és függvények (Transact-SQL)
végrehajtással kapcsolatos dinamikus felügyeleti nézetek és függvények (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)
sys.dm_exec_requests (Transact-SQL)
sys.dm_exec_cursors (Transact-SQL)
sys.dm_exec_xml_handles (Transact-SQL)
sys.dm_exec_query_memory_grants (Transact-SQL)
APPLY használata
sys.dm_exec_text_query_plan (Transact-SQL)