Megosztás a következőn keresztül:


sys.dm_exec_requests (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Visszaadja az SQL Serveren végrehajtott minden egyes kérelemre vonatkozó információkat. A kérésekkel kapcsolatos további információkért tekintse meg a Szál és a Feladatarchitektúra útmutatót.

Megjegyzés

Ha ezt az Azure Synapse Analytics vagy Analytics Platform System (PDW) dedikált SQL-készletéből szeretné meghívni, tekintse meg a sys.dm_pdw_exec_requests. Kiszolgáló nélküli SQL-készlet vagy Microsoft Fabric esetén használja a következőt sys.dm_exec_requests: .

Oszlop név Adattípus Leírás
session_id smallint Annak a munkamenetnek az azonosítója, amelyhez a kérés kapcsolódik. Nem null értékű.
request_id int A kérés azonosítója. A munkamenet kontextusában egyedi. Nem null értékű.
start_time dátum és idő Időbélyeg, amikor a kérés megérkezett. Nem null értékű.
status nvarchar(30) A kérés állapota. Az alábbi értékek egyike lehet:

háttér
visszaállítás
futás
Futtatható
alvó
Felfüggesztett

Nem null értékű.
command nvarchar(32) A jelenleg feldolgozott parancstípust azonosítja. A gyakori parancstípusok a következő értékeket tartalmazzák:

SELECT
BEILLESZT
Frissítés
töröl
BIZTONSÁGI MENTÉSI NAPLÓ
BIZTONSÁGI MENTÉSI ADATBÁZIS
DBCC
RÉSZÉRE

A kérés szövege lekérhető sys.dm_exec_sql_text a kérelem megfelelőjével sql_handle . A belső rendszerfolyamatok az általuk végrehajtott feladat típusa alapján állítják be a parancsot. A tevékenységek a következő értékeket tartalmazhatják:

ZÁRFIGYELŐ
CHECKPOINTLAZY
ÍRÓ

Nem null értékű.
sql_handle varbinary(64) Egy jogkivonat, amely egyedileg azonosítja a lekérdezés részét képező köteget vagy tárolt eljárást. Nullázható.
statement_start_offset int Bájtban, 0-tól kezdődően az aktuálisan végrehajtó utasítás kezdőpozícióját jelzi a jelenleg futó köteghez vagy megőrzött objektumhoz. A kérelem aktuális végrehajtási utasításának lekéréséhez a , a , a sql_handleés a statement_end_offset dinamikus felügyeleti függvénnyel együtt sys.dm_exec_sql_texthasználható. Nullázható.
statement_end_offset int Bájtban, 0-tól kezdődően az aktuálisan végrehajtó utasítás zárópozícióját jelzi a jelenleg futó köteghez vagy megőrzött objektumhoz. A kérelem aktuális végrehajtási utasításának lekéréséhez a , a , a sql_handleés a statement_start_offset dinamikus felügyeleti függvénnyel együtt sys.dm_exec_sql_texthasználható. 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ó.
database_id smallint Annak az adatbázisnak az azonosítója, a amelyen a kérés fut. Nem null értékű.

Az Azure SQL Database-ben az értékek egyediek egyetlen adatbázisban vagy rugalmas készletben, de nem logikai kiszolgálón belül.
user_id int A kérelmet beküldő felhasználó azonosítója. Nem null értékű.
connection_id egyedi azonosító Annak a kapcsolatnak az azonosítója, amelyre a kérés érkezett. Nullázható.
blocking_session_id smallint A kérést blokkoló munkamenet azonosítója. Ha ez az oszlop vagy NULL0, a kérés nincs letiltva, vagy a blokkoló munkamenet munkamenet-információi nem érhetők el (vagy nem azonosíthatók). További információ: Az SQL Server blokkolási problémáinak ismertetése és megoldása.

-2 = A blokkoló erőforrás egy árva elosztott tranzakció tulajdonában van.

-3 = A blokkoló erőforrás egy késleltetett helyreállítási tranzakció tulajdonában van.

-4 = session_id a blokkoló retesz tulajdonosa jelenleg nem határozható meg belső reteszállapot-áttűnések miatt.

-5 = session_id a blokkoló retesz tulajdonosa nem határozható meg, mert nincs nyomon követve ehhez a retesztípushoz (például egy SH-reteszhez).

Önmagában blocking_session_id-5 nem jelez teljesítményproblémát. -5 azt jelzi, hogy a munkamenet aszinkron művelet végrehajtására vár. A bevezetés előtt -5 ugyanaz a munkamenet lett volna látható blocking_session_id0, annak ellenére, hogy még várakozási állapotban volt.

A számítási feladattól függően a megfigyelés blocking_session_id = -5 gyakori előfordulás lehet.
wait_type nvarchar(60) Ha a kérés jelenleg le van tiltva, ez az oszlop a várakozás típusát adja vissza. Nullázható.

Ha egy kérelem több feladatot használ, például a lekérdezésen belüli párhuzamosság miatt, a tevékenységek különböző, különböző várakozási típusokkal rendelkező erőforrásokon várakozhatnak. A tevékenységek blokkolhatók, míg az ugyanazon kérelem más tevékenységei folytatják a végrehajtást. Ha meg szeretné állapítani az egyes tevékenységek várakozási típusát és időtartamát, valamint hogy le van-e tiltva, használja a sys.dm_os_waiting_tasks.

A várakozási típusokkal kapcsolatos információkért lásd: sys.dm_os_wait_stats.
wait_time int Ha a kérés jelenleg le van tiltva, ez az oszlop az aktuális várakozás időtartamát adja vissza ezredmásodpercben. Nem null értékű.
last_wait_type nvarchar(60) Ha ez a kérés korábban le lett tiltva, ez az oszlop az utolsó várakozás típusát adja vissza. Nem null értékű.
wait_resource nvarchar(256) Ha a kérés jelenleg le van tiltva, ez az oszlop azt az erőforrást adja vissza, amelyre a kérés jelenleg várakozik. Nem null értékű.
open_transaction_count int A kérelemhez megnyitott tranzakciók száma. Nem null értékű.
open_resultset_count int A kérelemhez megnyitott eredményhalmazok száma. Nem null értékű.
transaction_id bigint Annak a tranzakciónak az azonosítója, amelyben a kérés végrehajtja. Nem null értékű.
context_info varbinary(128) CONTEXT_INFO munkamenet értékét. Nullázható.
percent_complete valódi A következő parancsokhoz elvégzett munka százalékos aránya:

ALTER INDEX REORGANIZE
AUTO_SHRINK lehetőség a ALTER DATABASE
BACKUP DATABASE
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
DBCC INDEXDEFRAG
DBCC SHRINKDATABASE
DBCC SHRINKFILE
RECOVERY
RESTORE DATABASE
ROLLBACK
TDE ENCRYPTION

Nem null értékű.
estimated_completion_time bigint Csak belső. Nem null értékű.
cpu_time int A kérelem által használt processzoridő ezredmásodpercben. Nem null értékű.
total_elapsed_time int A kérés megérkezése óta eltelt teljes idő ezredmásodpercben eltelt. Nem null értékű.
scheduler_id int A kérést ütemező ütemező azonosítója. Nullázható.
task_address varbinary(8) A kérelemhez társított tevékenységhez lefoglalt memóriacím. Nullázható.
reads bigint A kérés által végrehajtott olvasások száma. Nem null értékű.
writes bigint A kérés által végrehajtott írások száma. Nem null értékű.
logical_reads bigint A kérelem által végrehajtott logikai olvasások száma. Nem null értékű.
text_size int A kérelem SZÖVEGBESZKOSÍTÁS beállítása. Nem null értékű.
language nvarchar(128) A kérés nyelvi beállítása. Nullázható.
date_format nvarchar(3) DATEFORMAT-beállítás a kéréshez. Nullázható.
date_first smallint DATEFIRST-beállítás a kéréshez. Nem null értékű.
quoted_identifier bit 1 = QUOTED_IDENTIFIER be van kapcsolva a kéréshez. Ellenkező esetben 0.

Nem null értékű.
arithabort bit 1 = Az ARITHABORT-beállítás be van kapcsolva a kéréshez. Ellenkező esetben 0.

Nem null értékű.
ansi_null_dflt_on bit 1 = ANSI_NULL_DFLT_ON beállítás be van kapcsolva a kéréshez. Ellenkező esetben 0.

Nem null értékű.
ansi_defaults bit 1 = ANSI_DEFAULTS beállítás be van kapcsolva a kéréshez. Ellenkező esetben 0.

Nem null értékű.
ansi_warnings bit 1 = ANSI_WARNINGS beállítás be van kapcsolva a kéréshez. Ellenkező esetben 0.

Nem null értékű.
ansi_padding bit 1 = ANSI_PADDING beállítás be van kapcsolva a kéréshez.

Ellenkező esetben 0.

Nem null értékű.
ansi_nulls bit 1 = ANSI_NULLS beállítás be van kapcsolva a kéréshez. Ellenkező esetben 0.

Nem null értékű.
concat_null_yields_null bit 1 = CONCAT_NULL_YIELDS_NULL beállítás be van kapcsolva a kéréshez. Ellenkező esetben 0.

Nem null értékű.
transaction_isolation_level smallint Elkülönítési szint, amellyel a kérelem tranzakciója létrejön. Nem null értékű.
0 = Meghatározatlan
1 = ReadUncomcomided
2 = ReadCommitted
3 = Megismételhető
4 = Szerializálható
5 = Pillanatkép
lock_timeout int A kérés időtúllépési időszakának zárolása ezredmásodpercben. Nem null értékű.
deadlock_priority int DEADLOCK_PRIORITY kérés beállítása. Nem null értékű.
row_count bigint A kérés által az ügyfélnek visszaadott sorok száma. Nem null értékű.
prev_error int Utolsó hiba, amely a kérés végrehajtása során történt. Nem null értékű.
nest_level int A kérelemben végrehajtó kód aktuális beágyazási szintje. Nem null értékű.
granted_query_memory int A lekérdezés végrehajtásához lefoglalt lapok száma a kérelemben. Nem null értékű.
executing_managed_code bit Azt jelzi, hogy egy adott kérés jelenleg közös nyelvi futtatókörnyezeti objektumokat hajt-e végre, például rutinokat, típusokat és eseményindítókat. ez a beállítás arra a teljes időre van beállítva, amikor egy közös nyelvi futtatókörnyezeti objektum a veremen van, még akkor is, ha Transact-SQL a közös nyelvi futtatókörnyezetből fut. Nem null értékű.
group_id int Annak a számítási feladatcsoportnak az azonosítója, amelyhez a lekérdezés tartozik. Nem null értékű.
query_hash bináris(8) A lekérdezésre kiszámított bináris kivonatérték hasonló logikájú lekérdezések azonosítására szolgál. A lekérdezés kivonatával meghatározhatja a csak literális értékektől eltérő lekérdezések összesített erőforrás-használatát.
query_plan_hash bináris(8) A lekérdezés végrehajtási tervében kiszámított bináris kivonatérték, amely hasonló lekérdezés-végrehajtási tervek azonosítására szolgál. A lekérdezésterv kivonatával megkeresheti a hasonló végrehajtási tervekkel rendelkező lekérdezések összesített költségét.
statement_sql_handle varbinary(64) A következővonatkozik: SQL Server 2014 (12.x) és újabb.

sql_handle az egyes lekérdezések közül.

Ez az oszlop akkor jelenik NULL meg, ha a Lekérdezéstár nincs engedélyezve az adatbázishoz.
statement_context_id bigint A következővonatkozik: SQL Server 2014 (12.x) és újabb.

A választható idegen kulcs a következőhöz sys.query_context_settings: .

Ez az oszlop akkor jelenik NULL meg, ha a Lekérdezéstár nincs engedélyezve az adatbázishoz.
dop int Az: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.

A lekérdezés párhuzamossági foka.
parallel_worker_count int Az: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.

A fenntartott párhuzamos feldolgozók száma, ha ez párhuzamos lekérdezés.
external_script_request_id egyedi azonosító Az: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.

Az aktuális kéréshez társított külső szkriptkérelem azonosítója.
is_resumable bit A következővonatkozik: SQL Server 2017 (14.x) és újabb.

Azt jelzi, hogy a kérelem folytatható indexművelet-e.
page_resource bináris(8) A következővonatkozik: SQL Server 2019 (15.x)

Az oldalerőforrás 8 bájtos hexadecimális ábrázolása, ha az wait_resource oszlop tartalmaz egy oldalt. További információ: sys.fn_PageResCracker.
page_server_reads bigint A következőkre vonatkozik: Azure SQL Database Rugalmas skálázás

A kérés által végrehajtott oldalkiszolgálói olvasások száma. Nem null értékű.
dist_statement_id egyedi azonosító A következőkre vonatkozik: SQL Server 2022 és újabb verziók, Azure SQL Database, Felügyelt Azure SQL-példány, Azure Synapse Analytics (csak kiszolgáló nélküli készletek) és Microsoft Fabric

A kérelemhez tartozó utasítás egyedi azonosítója. Nem null értékű.

Megjegyzések

Az SQL Serveren kívüli kód (például kiterjesztett tárolt eljárások és elosztott lekérdezések) végrehajtásához a szálnak a nem megelőző ütemezőn kívül kell futnia. Ehhez a feldolgozó átáll a megelőző módra. A dinamikus felügyeleti nézet által visszaadott időértékek nem tartalmazzák a megelőző módban töltött időt.

Párhuzamos kérések sor módban történő végrehajtásakor az SQL Server egy feldolgozó szálat rendel hozzá a hozzájuk rendelt feladatok végrehajtásáért felelős munkavégző szálak koordinálásához. Ebben a DMV-ben csak a koordinátori szál látható a kéréshez. Az oszlopok reads, writesés logical_readsrow_countnem frissülnek a koordinátori szálhoz. Az oszlopok wait_type, wait_time, last_wait_type, wait_resourceés granted_query_memory csak a koordinátori szálra frissülnek . További információ: Szál és feladatarchitektúra útmutató.

Az wait_resource oszlop a resource_description hasonló információkat tartalmaz, de másképpen van formázva.

Engedélyek

Ha a felhasználó rendelkezik VIEW SERVER STATE engedéllyel a kiszolgálón, a felhasználó minden végrehajtási munkamenetet lát az SQL Server-példányon; ellenkező esetben a felhasználó csak az aktuális munkamenetet látja. VIEW SERVER STATE nem adható meg az Azure SQL Database-ben, ezért sys.dm_exec_requests mindig az aktuális kapcsolatra korlátozódik.

A rendelkezésre állási csoport forgatókönyveiben, ha a másodlagos replika csak olvasási szándékra van beállítva, a másodlagoshoz való kapcsolatnak a kapcsolati sztring paramétereiben meg kell adnia az alkalmazás szándékát a kapcsolati applicationintent=readonlysztring paramétereiben. Ellenkező esetben a hozzáférési ellenőrzés sys.dm_exec_requests nem felel meg a rendelkezésre állási csoportban lévő adatbázisoknak, még akkor sem, ha VIEW SERVER STATE van engedély.

Az SQL Server 2022 (16.x) és újabb verzióihoz sys.dm_exec_requests a KISZOLGÁLÓ TELJESÍTMÉNYÁLLAPOT-megtekintése engedély szükséges a kiszolgálón.

Példák

Egy. Futó köteg lekérdezési szövegének megkeresése

Az alábbi példa lekérdezésekkel sys.dm_exec_requests megkeresheti az érdekes lekérdezést, és kimásolhatja a sql_handle kimenetből.

SELECT * FROM sys.dm_exec_requests;
GO

Ezután az utasítás szövegének lekéréséhez használja a másolt sql_handle rendszerfüggvényt sys.dm_exec_sql_text(sql_handle).

SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO

B. Aktív kérések megjelenítése

Az alábbi példa az SQL Server-adattárházban jelenleg futó lekérdezéseket mutatja be, a saját munkamenet (@@SPID) kivételével. Ezzel lekéri CROSS APPLYsys.dm_exec_sql_text az egyes kérések teljes lekérdezési szövegét, és összekapcsolja a felhasználóval sys.dm_exec_sessions a gazdagépek adatait. A session_id <> @@SPID szűrő biztosítja, hogy ne jelenik meg a saját lekérdezése az eredményekben.

SELECT r.session_id,
       r.status,
       r.command,
       r.start_time,
       r.total_elapsed_time / 1000.00 AS elapsed_seconds,
       r.cpu_time / 1000.00 AS cpu_seconds,
       r.reads,
       r.writes,
       r.logical_reads,
       r.row_count,
       s.login_name,
       s.host_name,
       t.text AS query_text
FROM sys.dm_exec_requests AS r
     INNER JOIN sys.dm_exec_sessions AS s
         ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.session_id <> @@SPID
ORDER BY r.start_time DESC;

C. A futó köteg által tartott összes zárolás megkeresése

Az alábbi példa lekérdezi sys.dm_exec_requests az érdekes köteg megkeresését és a kimenetből való másolását transaction_id .

SELECT * FROM sys.dm_exec_requests;
GO

Ezután a zárolási adatok megkereséséhez használja a rendszerfüggvénybe transaction_idmásolt sys.dm_tran_locks adatokat.

SELECT * FROM sys.dm_tran_locks
WHERE request_owner_type = N'TRANSACTION'
    AND request_owner_id = < copied transaction_id >;
GO

D. Az összes jelenleg letiltott kérés megkeresése

Az alábbi példa lekérdezi sys.dm_exec_requests a letiltott kérelmekre vonatkozó információkat.

SELECT session_id,
       status,
       blocking_session_id,
       wait_type,
       wait_time,
       wait_resource,
       transaction_id
FROM sys.dm_exec_requests
WHERE status = N'suspended';
GO

E. Meglévő kérések megrendelése PROCESSZOR szerint

SELECT [req].[session_id],
    [req].[start_time],
    [req].[cpu_time] AS [cpu_time_ms],
    OBJECT_NAME([ST].[objectid], [ST].[dbid]) AS [ObjectName],
    SUBSTRING(
        REPLACE(
            REPLACE(
                SUBSTRING(
                    [ST].[text], ([req].[statement_start_offset] / 2) + 1,
                    ((CASE [req].[statement_end_offset]
                            WHEN -1 THEN DATALENGTH([ST].[text])
                            ELSE [req].[statement_end_offset]
                        END - [req].[statement_start_offset]
                        ) / 2
                    ) + 1
                ), CHAR(10), ' '
            ), CHAR(13), ' '
        ), 1, 512
    ) AS [statement_text]
FROM
    [sys].[dm_exec_requests] AS [req]
    CROSS APPLY [sys].dm_exec_sql_text([req].[sql_handle]) AS [ST]
ORDER BY
    [req].[cpu_time] DESC;
GO