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)
databáze SQL v Microsoft Fabric
Vrátí informace o frontě čekání úkolů, které čekají na nějaký prostředek. Další informace o úkolech najdete v průvodci architekturou vláken a úloh.
Poznámka:
Pokud to chcete volat ze služby Azure Synapse Analytics nebo systému PDW (Analytics Platform System), použijte název sys.dm_pdw_nodes_os_waiting_tasks. Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.
| Název sloupce | Datový typ | Description |
|---|---|---|
waiting_task_address |
varbinary(8) | Adresa čekající úlohy. |
session_id |
smallint | ID relace přidružené k úkolu. |
exec_context_id |
int | ID kontextu spuštění přidruženého k úloze. |
wait_duration_ms |
bigint | Celková doba čekání pro tento typ čekání v milisekundách Tento čas je inkluzivní .signal_wait_time |
wait_type |
nvarchar(60) | Název typu čekání. Další informace najdete v tématu sys.dm_os_wait_stats. |
resource_address |
varbinary(8) | Adresa zdroje, na který úkol čeká. |
blocking_task_address |
varbinary(8) | Úkol, který aktuálně tento zdroj drží |
blocking_session_id |
smallint | ID relace blokující požadavek. Pokud se jedná NULLo tento sloupec, požadavek není zablokovaný nebo informace o relaci blokující relace nejsou k dispozici (nebo se nedají identifikovat).-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 nebylo možné určit z důvodu vnitřních přechodů stavu západky. |
blocking_exec_context_id |
int | ID kontextu provádění blokující úlohy. |
resource_description |
nvarchar(3072) | Popis spotřebovaného prostředku Další informace naleznete v tématu resource_description sloupec. |
pdw_node_id |
int | Identifikátor uzlu, na který je tato distribuce zapnutá. Platí pro: Azure Synapse Analytics a Analytics Platform System (PDW) |
Sloupec resource_description
Sloupec resource_description obsahuje následující možné hodnoty.
Vlastník prostředku fondu vláken
threadpool id=scheduler<hex-address>
Vlastník prostředku paralelního dotazu
exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>
Typ exchange-wait
e_waitNonee_waitPipeNewRowe_waitPipeGetRowe_waitSynchronizeConsumerOpene_waitPortOpene_waitPortClosee_waitRange
Uzamknout vlastníka prostředku
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>může být:- Pro
DATABASE:databaselock subresource=<databaselock-subresource> dbid=<db-id> - Pro
FILE:filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id> - Pro
OBJECT:objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id> - Pro
PAGE:pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource> - Pro
Key:keylock hobtid=<hobt-id> dbid=<db-id> - Pro
EXTENT:extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Pro
RID:ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Pro
APPLICATION:applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id> - Pro
METADATA:metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id> - Pro
HOBT:hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id> - Pro
ALLOCATION_UNIT:allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- Pro
<mode>může být:Sch-S, Sch-M, Sch-M, U, X, IS, IU, IX, SIU, SIX, UIX, BU, RangeS-S, RangeS-U, RangeI-N, RangeI-U, RangeI-X, RangeX-, RangeX-U, RangeX-X
Vlastník externího prostředku
Externí ExternalResource=<wait-type>
Obecný vlastník prostředku
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Vlastník prostředku západky
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
Vlastník prostředku XACT (transakce)
Nastane, když je povolené optimalizované uzamčení :
-
xactlock:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
Povolení
SQL Server 2019 (15.x) a starší verze vyžadují VIEW SERVER STATE oprávnění.
SQL Server 2022 (16.x) a novější verze a SQL Server a Azure SQL Managed Instance vyžadují VIEW SERVER PERFORMANCE STATE oprávnění k serveru.
U cílů služby Azure SQL Database Basic, S0 a S1 a pro databáze v elastických fondech se vyžaduje účet správce serveru , účet správce Microsoft Entra nebo členství v ##MS_ServerStateReader##roli serveru . U všech ostatních cílů VIEW DATABASE STATE služby SQL Database se vyžaduje buď oprávnění k databázi, nebo členství v ##MS_ServerStateReader## roli serveru.
Examples
A. Identifikace úkolů z blokovaných relací
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Zobrazení čekajících úkolů na připojení
SELECT st.text AS [SQL Text],
c.connection_id,
w.session_id,
w.wait_duration_ms,
w.wait_type,
w.resource_address,
w.blocking_session_id,
w.resource_description,
c.client_net_address,
c.connect_time
FROM sys.dm_os_waiting_tasks AS w
INNER JOIN sys.dm_exec_connections AS c
ON w.session_id = c.session_id
CROSS APPLY (SELECT *
FROM sys.dm_exec_sql_text(c.most_recent_sql_handle)) AS st
WHERE w.session_id > 50
AND w.wait_duration_ms > 0
ORDER BY c.connection_id, w.session_id;
GO
C. Zobrazení čekajících úkolů pro všechny uživatelské procesy s dalšími informacemi
SELECT 'Waiting_tasks' AS [Information],
owt.session_id,
owt.wait_duration_ms,
owt.wait_type,
owt.blocking_session_id,
owt.resource_description,
es.program_name,
est.text,
est.dbid,
eqp.query_plan,
er.database_id,
es.cpu_time,
es.memory_usage * 8 AS memory_usage_KB
FROM sys.dm_os_waiting_tasks AS owt
INNER JOIN sys.dm_exec_sessions AS es
ON owt.session_id = es.session_id
INNER JOIN sys.dm_exec_requests AS er
ON es.session_id = er.session_id
OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) AS est
OUTER APPLY sys.dm_exec_query_plan(er.plan_handle) AS eqp
WHERE es.is_user_process = 1
ORDER BY owt.session_id;
GO