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í pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
koncový bod SQL Analytics ve službě Microsoft Fabric
Úložiště v Microsoft Fabric
Vrací informace o každé žádosti, která se spouští na SQL Serveru. Další informace o požadavcích najdete v průvodci architekturou vláken a úloh.
Poznámka:
Pokud ho chcete volat z vyhrazeného fondu SQL ve službě Azure Synapse Analytics nebo PDW (Platform System), přečtěte si sys.dm_pdw_exec_requests. Pro bezserverový fond SQL nebo Microsoft Fabric použijte sys.dm_exec_requests
.
Název sloupce | Datový typ | Popis |
---|---|---|
session_id |
smallint | ID relace, ke které tento požadavek souvisí. Není nulovatelný. |
request_id |
int | ID požadavku. Jedinečné v kontextu relace. Není nulovatelný. |
start_time |
datum a čas | Časové razítko, kdy žádost přišla. Není nulovatelný. |
status |
nvarchar(30) | Stav žádosti Může to být jedna z následujících hodnot: pozadí vrácení zpět běží spustitelný spánek pozastavený Není nulovatelný. |
command |
nvarchar(32) | Identifikuje aktuální typ zpracovávaného příkazu. Mezi běžné typy příkazů patří následující hodnoty: VYBRAT VLOŽIT Aktualizace VYMAZAT PROTOKOL ZÁLOHOVÁNÍ ZÁLOHOVAT DATABÁZI DBCC PRO Text požadavku lze načíst pomocí sys.dm_exec_sql_text odpovídajícího sql_handle požadavku. Interní systémové procesy nastaví příkaz na základě typu úlohy, kterou provádějí. Úkoly můžou obsahovat následující hodnoty:LOCK MONITOR CHECKPOINTLAZY SPISOVATEL Není nulovatelný. |
sql_handle |
varbinary(64) | Token, který jednoznačně identifikuje dávku nebo uloženou proceduru, na které je dotaz součástí. Nulovatelný. |
statement_start_offset |
int | Označuje počáteční pozici aktuálně spouštěného příkazu v bajtech počínaje číslem 0 pro aktuálně spuštěný dávkový nebo trvalý objekt. Lze použít společně s sql_handle funkcí , a statement_end_offset sys.dm_exec_sql_text dynamickou správu k načtení aktuálně prováděného příkazu pro požadavek. Nulovatelný. |
statement_end_offset |
int | Označuje, v bajtech, počínaje 0, koncovou pozici aktuálně spouštěného příkazu pro aktuálně spuštěný dávkový nebo trvalý objekt. Lze použít společně s sql_handle funkcí , a statement_start_offset sys.dm_exec_sql_text dynamickou správu k načtení aktuálně prováděného příkazu pro požadavek. Nulovatelný. |
plan_handle |
varbinary(64) | Token, který jednoznačně identifikuje plán provádění dotazů pro dávku, která se právě spouští. Nulovatelný. |
database_id |
smallint | ID databáze, pro kterou se požadavek spouští. Není nulovatelný. Ve službě Azure SQL Database jsou hodnoty jedinečné v rámci jedné databáze nebo elastického fondu, ale ne v rámci logického serveru. |
user_id |
int | ID uživatele, který žádost odeslal. Není nulovatelný. |
connection_id |
jedinečnýidentifikátor | ID připojení, na kterém žádost přišla. Nulovatelný. |
blocking_session_id |
smallint | ID relace, která blokuje požadavek. Pokud je NULL tento sloupec nebo 0 , požadavek není zablokovaný nebo informace o relaci blokující relace nejsou k dispozici (nebo není možné ji identifikovat). Další informace naleznete v tématu Vysvětlení a řešení problémů s blokováním SQL Serveru.-2 = Blokující prostředek je vlastněn osamocenou distribuovanou transakcí. -3 = Blokující prostředek je vlastněn odloženou transakcí obnovení. -4 = session_id vlastníka blokující západky nelze v tuto chvíli určit z důvodu vnitřních přechodů stavu západky.-5
=
session_id vlastníka blokující západky nebylo možné určit, protože není sledován pro tento typ západky (například pro západku SH).Sama o sobě blocking_session_id -5 neznamená problém s výkonem.
-5 označuje, že relace čeká na dokončení asynchronní akce. Před -5 zavedením by se stejná relace zobrazila blocking_session_id 0 , i když byla stále ve stavu čekání.V závislosti na úloze může být pozorování blocking_session_id = -5 běžným výskytem. |
wait_type |
nvarchar(60) | Pokud je požadavek aktuálně blokovaný, vrátí tento sloupec typ čekání. Nulovatelný. Informace o typech čekání najdete v tématu sys.dm_os_wait_stats. |
wait_time |
int | Pokud je požadavek aktuálně blokovaný, vrátí tento sloupec dobu trvání v milisekundách aktuálního čekání. Není nulovatelný. |
last_wait_type |
nvarchar(60) | Pokud byl tento požadavek dříve zablokovaný, vrátí tento sloupec typ posledního čekání. Není nulovatelný. |
wait_resource |
nvarchar(256) | Pokud je požadavek aktuálně blokovaný, vrátí tento sloupec prostředek, na který právě čeká požadavek. Není nulovatelný. |
open_transaction_count |
int | Počet transakcí, které jsou pro tento požadavek otevřené. Není nulovatelný. |
open_resultset_count |
int | Počet sad výsledků, které jsou pro tento požadavek otevřené. Není nulovatelný. |
transaction_id |
bigint | ID transakce, ve které se tento požadavek provede. Není nulovatelný. |
context_info |
varbinary(128) | CONTEXT_INFO hodnotu relace. Nulovatelný. |
percent_complete |
skutečné | Procento dokončené práce pro následující příkazy:ALTER INDEX REORGANIZE AUTO_SHRINK možnost s možností ALTER DATABASE BACKUP DATABASE DBCC CHECKDB DBCC CHECKFILEGROUP DBCC CHECKTABLE DBCC INDEXDEFRAG DBCC SHRINKDATABASE DBCC SHRINKFILE RECOVERY RESTORE DATABASE ROLLBACK TDE ENCRYPTION Není nulovatelný. |
estimated_completion_time |
bigint | Pouze interní. Není nulovatelný. |
cpu_time |
int | Čas procesoru v milisekundách, který požadavek používá. Není nulovatelný. |
total_elapsed_time |
int | Celková doba uplynulá v milisekundách od přijetí požadavku. Není nulovatelný. |
scheduler_id |
int | ID plánovače, který plánuje tento požadavek. Nulovatelný. |
task_address |
varbinary(8) | Adresa paměti přidělená úkolu přidruženému k tomuto požadavku. Nulovatelný. |
reads |
bigint | Počet čtení provedených tímto požadavkem Není nulovatelný. |
writes |
bigint | Počet zápisů provedených tímto požadavkem Není nulovatelný. |
logical_reads |
bigint | Počet logickýchčteních Není nulovatelný. |
text_size |
int | NASTAVENÍ TEXTIZE pro tento požadavek. Není nulovatelný. |
language |
nvarchar(128) | Nastavení jazyka pro požadavek. Nulovatelný. |
date_format |
nvarchar(3) | Nastavení DATEFORMAT pro požadavek Nulovatelný. |
date_first |
smallint | Nastavení DATEFIRST pro požadavek Není nulovatelný. |
quoted_identifier |
bit | 1 = QUOTED_IDENTIFIER je pro požadavek zapnuto. Jinak je to 0. Není nulovatelný. |
arithabort |
bit | 1 = Nastavení ARITHABORT je pro požadavek zapnuté. Jinak je to 0. Není nulovatelný. |
ansi_null_dflt_on |
bit | 1 = ANSI_NULL_DFLT_ON nastavení je pro požadavek zapnuté. Jinak je to 0. Není nulovatelný. |
ansi_defaults |
bit | 1 = ANSI_DEFAULTS nastavení je pro požadavek zapnuté. Jinak je to 0. Není nulovatelný. |
ansi_warnings |
bit | 1 = ANSI_WARNINGS nastavení je pro požadavek zapnuté. Jinak je to 0. Není nulovatelný. |
ansi_padding |
bit | 1 = ANSI_PADDING nastavení je pro požadavek zapnuté. Jinak je to 0. Není nulovatelný. |
ansi_nulls |
bit | 1 = ANSI_NULLS nastavení je pro požadavek zapnuté. Jinak je to 0. Není nulovatelný. |
concat_null_yields_null |
bit | 1 = CONCAT_NULL_YIELDS_NULL nastavení je pro požadavek zapnuté. Jinak je to 0. Není nulovatelný. |
transaction_isolation_level |
smallint | Úroveň izolace, se kterou se vytvoří transakce pro tento požadavek. Není nulovatelný. 0 = Nezadané 1 = ReadUncommitted 2 = ReadCommitted 3 = Opakovatelné 4 = Serializovatelné 5 = Snímek |
lock_timeout |
int | Období časového limitu uzamčení v milisekundách pro tento požadavek Není nulovatelný. |
deadlock_priority |
int | DEADLOCK_PRIORITY nastavení požadavku. Není nulovatelný. |
row_count |
bigint | Počet řádků vrácených klientovi tímto požadavkem Není nulovatelný. |
prev_error |
int | Poslední chyba, ke které došlo během provádění požadavku. Není nulovatelný. |
nest_level |
int | Aktuální úroveň vnoření kódu, který se spouští na požadavku. Není nulovatelný. |
granted_query_memory |
int | Počet stránek přidělených k provedení dotazu na požadavek Není nulovatelný. |
executing_managed_code |
bit | Určuje, jestli konkrétní požadavek aktuálně spouští objekty common language runtime, jako jsou rutiny, typy a triggery. Je nastavená na plný čas, kdy je objekt modulu CLR (Common Language Runtime) v zásobníku, i když běží Transact-SQL z modulu CLR (Common Language Runtime). Není nulovatelný. |
group_id |
int | ID skupiny úloh, do které tento dotaz patří. Není nulovatelný. |
query_hash |
binární(8) | Binární hodnota hash vypočítaná v dotazu a použitá k identifikaci dotazů s podobnou logikou. Pomocí hodnoty hash dotazu můžete určit agregované využití prostředků pro dotazy, které se liší pouze podle hodnot literálů. |
query_plan_hash |
binární(8) | Binární hodnota hash vypočítaná v plánu provádění dotazu a použitá k identifikaci podobných plánů provádění dotazů. K vyhledání kumulativních nákladů na dotazy s podobnými plány spuštění můžete použít hodnotu hash plánu dotazu. |
statement_sql_handle |
varbinary(64) |
platí pro: SQL Server 2014 (12.x) a novější.sql_handle jednotlivého dotazu.Tento sloupec je NULL v případě, že úložiště dotazů není pro databázi povolené. |
statement_context_id |
bigint |
platí pro: SQL Server 2014 (12.x) a novější. Volitelný cizí klíč pro sys.query_context_settings .Tento sloupec je NULL v případě, že úložiště dotazů není pro databázi povolené. |
dop |
int |
platí pro: SQL Server 2016 (13.x) a novější. Stupeň paralelismu dotazu. |
parallel_worker_count |
int |
platí pro: SQL Server 2016 (13.x) a novější. Počet rezervovaných paralelních pracovních procesů, pokud se jedná o paralelní dotaz. |
external_script_request_id |
jedinečnýidentifikátor |
platí pro: SQL Server 2016 (13.x) a novější. ID požadavku externího skriptu přidružené k aktuálnímu požadavku. |
is_resumable |
bit |
platí pro: SQL Server 2017 (14.x) a novější. Určuje, jestli je požadavek resumable index operace. |
page_resource |
binární(8) |
platí pro: SQL Server 2019 (15.x) Šestnáctková reprezentace prostředku stránky s 8 bajty, pokud wait_resource sloupec obsahuje stránku. Další informace najdete v tématu sys.fn_PageResCracker. |
page_server_reads |
bigint |
Platí pro: Azure SQL Database Hyperscale Počet čtení stránkového serveru provedených tímto požadavkem Není nulovatelný. |
dist_statement_id |
jedinečnýidentifikátor |
Platí pro: SQL Server 2022 a novější verze, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics (jenom bezserverové fondy) a Microsoft Fabric. Jedinečné ID příkazu pro odeslaný požadavek. Není nulovatelný. |
Poznámky
Pokud chcete spustit kód, který je mimo SQL Server (například rozšířené uložené procedury a distribuované dotazy), musí vlákno provést mimo kontrolu ne preemptivního plánovače. K tomu se pracovní proces přepne do preemptivního režimu. Hodnoty času vrácené tímto zobrazením dynamické správy nezahrnují čas strávený v preemptivním režimu.
Při provádění paralelních požadavků v režimu řádků sql Server přiřadí pracovní vlákno ke koordinaci pracovních vláken zodpovědných za dokončení úkolů přiřazených jim. V tomto zobrazení dynamické správy je pro požadavek viditelné pouze vlákno koordinátoru. Sloupce reads
, writes
, logical_reads
a row_count
nejsou aktualizovány pro koordinační vlákno. Sloupce wait_type
, wait_time
, last_wait_type
wait_resource
a granted_query_memory
jsou aktualizovány pouze pro koordinační vlákno. Další informace najdete v průvodci architekturou vláken a úloh.
Sloupec wait_resource
obsahuje podobné informace jako resource_description
v sys.dm_tran_locks , ale je formátován odlišně.
Dovolení
Pokud má VIEW SERVER STATE
uživatel na serveru oprávnění, zobrazí se na instanci SQL Serveru všechny spuštěné relace. V opačném případě se uživateli zobrazí pouze aktuální relace.
VIEW SERVER STATE
Ve službě Azure SQL Database se nedá udělit, takže sys.dm_exec_requests
je vždy omezeno na aktuální připojení.
Ve scénářích skupiny dostupnosti, pokud je sekundární replika nastavená jen pro čtení, musí připojení k sekundárnímu objektu zadat záměr aplikace v parametrech připojovacího řetězce přidáním applicationintent=readonly
. Jinak kontrola sys.dm_exec_requests
přístupu neprojde pro databáze ve skupině dostupnosti, i když VIEW SERVER STATE
je k dispozici oprávnění.
Pro SQL Server 2022 (16.x) a novější verze vyžaduje sys.dm_exec_requests
na serveru oprávnění ZOBRAZIT STAV VÝKONU SERVERU.
Příklady
A. Vyhledání textu dotazu pro spuštěnou dávku
Následující ukázkové sys.dm_exec_requests
dotazy najdou zajímavý dotaz a zkopírují ho sql_handle
z výstupu.
SELECT * FROM sys.dm_exec_requests;
GO
Potom k získání textu příkazu použijte zkopírovanou sql_handle
s systémovou funkcí sys.dm_exec_sql_text(sql_handle)
.
SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO
B. Zobrazení aktivních požadavků
Následující příklad ukazuje všechny aktuálně spuštěné dotazy v datovém skladu SQL Serveru s výjimkou vlastní relace (@@SPID
). Používá CROSS APPLY
sys.dm_exec_sql_text
se k načtení celého textu dotazu pro každý požadavek a spojení s sys.dm_exec_sessions
cílem zahrnout uživatele všechny informace o hostiteli. Filtr session_id <> @@SPID
zajistí, že ve výsledcích neuvidíte vlastní dotaz.
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. Vyhledání všech zámků, které má spuštěná dávka
Následující ukázkové sys.dm_exec_requests
dotazy najdou zajímavou dávku a zkopírují ji transaction_id
z výstupu.
SELECT * FROM sys.dm_exec_requests;
GO
Pak k vyhledání informací o zámku použijte zkopírovanou transaction_id
funkci systému sys.dm_tran_locks
.
SELECT * FROM sys.dm_tran_locks
WHERE request_owner_type = N'TRANSACTION'
AND request_owner_id = < copied transaction_id >;
GO
D. Vyhledání všech aktuálně blokovaných požadavků
Následující příklady dotazů sys.dm_exec_requests
na vyhledání informací o blokovaných požadavcích.
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. Objednání existujících požadavků podle procesoru
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
Související obsah
- zobrazení dynamické správy systému
- zobrazení a funkce související se spouštěním dynamické správy (Transact-SQL)
- sys.dm_os_memory_clerks (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- sys.dm_exec_query_memory_grants (Transact-SQL)
-
sys.dm_exec_query_plan (Transact-SQL) -
sys.dm_exec_sql_text (Transact-SQL) - SQL Server, objekt statistiky SQL
- Průvodce architekturou zpracování dotazů
- Průvodce architekturou vláken a úloh
- Průvodce uzamčením transakcí a verzováním řádků
- Vysvětlení a řešení problémů blokujících SQL Server