Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
Zwraca informacje o kolejce oczekiwania zadań oczekujących na jakiś zasób. Aby uzyskać więcej informacji na temat zadań, zobacz Przewodnik po architekturze wątków i zadań.
Uwaga / Notatka
Aby wywołać to z usługi Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_os_waiting_tasks. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
waiting_task_address |
varbinary(8) | Adres zadania oczekującego. |
session_id |
smallint | Identyfikator sesji skojarzonej z zadaniem. |
exec_context_id |
int | Identyfikator kontekstu wykonywania skojarzonego z zadaniem. |
wait_duration_ms |
bigint | Łączny czas oczekiwania dla tego typu oczekiwania w milisekundach. Ten czas obejmuje wartość signal_wait_time. |
wait_type |
nvarchar(60) | Nazwa typu oczekiwania. Aby uzyskać więcej informacji, zobacz sys.dm_os_wait_stats. |
resource_address |
varbinary(8) | Adres zasobu, dla którego zadanie oczekuje. |
blocking_task_address |
varbinary(8) | Zadanie, które obecnie przechowuje ten zasób |
blocking_session_id |
smallint | Identyfikator sesji blokującej żądanie. Jeśli ta kolumna to NULL, żądanie nie jest zablokowane lub informacje o sesji sesji blokującej nie są dostępne (lub nie można ich zidentyfikować).-2 = Zasób blokujący jest własnością oddzielonej transakcji rozproszonej.-3 = Zasób blokujący jest własnością transakcji odroczonego odzyskiwania.-4
=
session_id nie można określić właściciela zatrzaśnięć blokującego z powodu wewnętrznych przejść stanu zatrzaśnięć. |
blocking_exec_context_id |
int | Identyfikator kontekstu wykonywania zadania blokującego. |
resource_description |
nvarchar(3072) | Opis używanego zasobu. Aby uzyskać więcej informacji, zobacz kolumnę resource_description. |
pdw_node_id |
int | Identyfikator węzła, w ramach którego znajduje się ta dystrybucja. Dotyczy: Azure Synapse Analytics and Analytics Platform System (PDW) |
Kolumna resource_description
Kolumna resource_description ma następujące możliwe wartości.
Właściciel zasobu puli wątków
threadpool id=scheduler<hex-address>
Właściciel zasobu zapytania równoległego
exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>
Typ oczekiwania programu Exchange
e_waitNonee_waitPipeNewRowe_waitPipeGetRowe_waitSynchronizeConsumerOpene_waitPortOpene_waitPortClosee_waitRange
Zablokuj właściciela zasobu
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>może to być:- Dla elementu
DATABASE:databaselock subresource=<databaselock-subresource> dbid=<db-id> - Dla elementu
FILE:filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id> - Dla elementu
OBJECT:objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id> - Dla elementu
PAGE:pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource> - Dla elementu
Key:keylock hobtid=<hobt-id> dbid=<db-id> - Dla elementu
EXTENT:extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Dla elementu
RID:ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Dla elementu
APPLICATION:applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id> - Dla elementu
METADATA:metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id> - Dla elementu
HOBT:hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id> - Dla elementu
ALLOCATION_UNIT:allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- Dla elementu
<mode>może to być:Sch-S, Sch-M, S, U, X, IS, IU, IX, SIU, SIX, UIX, BU, RangeS-S, RangeS-U, RangeI-N, RangeI-S, RangeI-U, RangeI-U, RangeX-X, RangeX-U, RangeX-X
Właściciel zasobu zewnętrznego
Zewnętrzny ExternalResource=<wait-type>
Ogólny właściciel zasobu
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Zatrzaśnięć właściciela zasobu
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
Właściciel zasobu XACT (transakcja)
Występuje po włączeniu zoptymalizowanego blokowania :
-
xactlock:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
Permissions
Program SQL Server 2019 (15.x) i starsze wersje wymagają VIEW SERVER STATE uprawnień.
Sql Server 2022 (16.x) i nowsze wersje oraz SQL Server i Azure SQL Managed Instance wymagają VIEW SERVER PERFORMANCE STATE uprawnień na serwerze.
W przypadku celów usługi Azure SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.
Przykłady
A. Identyfikowanie zadań z zablokowanych sesji
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Wyświetlanie oczekujących zadań na połączenie
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. Wyświetlanie zadań oczekujących dla wszystkich procesów użytkownika z dodatkowymi informacjami
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