sys.dm_os_waiting_tasks (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Gibt Informationen zur Warteschlange von Tasks zurück, die auf eine Ressource warten. Weitere Informationen zu Aufgaben finden Sie im Thread- und Aufgabenarchitekturhandbuch.
Hinweis
Um dies von Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_os_waiting_tasks
. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
waiting_task_address |
varbinary(8) | Adresse des wartenden Tasks. |
session_id |
smallint | ID der Sitzung, die dem Task zugeordnet ist. |
exec_context_id |
int | ID des Ausführungskontexts, der dem Task zugeordnet ist. |
wait_duration_ms |
bigint | Gesamtwartezeit für diesen Wartetyp (in Millisekunden). Diese Zeit ist inklusive von signal_wait_time . |
wait_type |
nvarchar(60) | Der Name des Wartetyps. |
resource_address |
varbinary(8) | Adresse der Ressource, auf die der Task wartet. |
blocking_task_address |
varbinary(8) | Task, der derzeit diese Ressource verwendet. |
blocking_session_id |
smallint | ID der Sitzung, die die Anforderung blockiert. Wenn diese Spalte lautet NULL , wird die Anforderung nicht blockiert, oder die Sitzungsinformationen der Blockierungssitzung sind nicht verfügbar (oder können nicht identifiziert werden).-2 = Die Blockierungsressource gehört einer verwaisten verteilten Transaktion.-3 = Die Blockierungsressource gehört einer verzögerten Wiederherstellungstransaktion.-4 = session_id der Blockierungssperre konnte aufgrund interner Sperreszustandsübergänge nicht ermittelt werden. |
blocking_exec_context_id |
int | ID des Ausführungskontexts des blockierenden Tasks. |
resource_description |
nvarchar(3072) | Beschreibung der verwendeten Ressource. Weitere Informationen finden Sie in resource_description Spalte. |
pdw_node_id |
int | Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW) Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet. |
resource_description-Spalte
Die resource_description Spalte weist die folgenden möglichen Werte auf.
Besitzer der Threadpoolressource:
- threadpool id=scheduler<hex-address>
Besitzer der parallelen Abfrageressource:
- exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>
Exchange-Wait-Typ:
- e_waitNone
- e_waitPipeNewRow
- e_waitPipeGetRow
- e_waitSynchronizeConsumerOpen
- e_waitPortOpen
- e_waitPortClose
- e_waitRange
Ressourcenbesitzer sperren:
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>
kann sein:- Für DATENBANK:
databaselock subresource=<databaselock-subresource> dbid=<db-id>
- Für DATEI:
filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id>
- Für OBJEKT:
objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id>
- Für PAGE:
pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource>
- Für Schlüssel:
keylock hobtid=<hobt-id> dbid=<db-id>
- Für UMFANG:
extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id>
- Für RID:
ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id>
- Für ANWENDUNG:
applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id>
- Für METADATEN:
metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id>
- Für HOBT:
hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id>
- Für ALLOCATION_UNIT:
allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- Für DATENBANK:
<mode>
kann sein: 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-X, RangeX-, RangeX-U, RangeX-X
Besitzer externer Ressourcen:
- Äußerlich
ExternalResource=<wait-type>
Generischer Ressourcenbesitzer:
- TransactionMutex
TransactionInfo Workspace=<workspace-id>
- Mutex
- CLRTaskJoin
- CLRMonitorEvent
- CLRRWLockEvent
- resourceWait
Besitzer der Latch-Ressource:
<db-id>:<file-id>:<page-in-file>
<GUID>
<latch-class> (<latch-address>)
Der XACT-Ressourcenbesitzer (Transaction) tritt auf, wenn die optimierte Sperrung aktiviert ist:
xactlock
:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
Berechtigungen
Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE
-Berechtigung erforderlich.
Für die SQL-Datenbank-Ziele Basic, S0 und S1 sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators oder des Microsoft Entra-Administratorkontos oder die Mitgliedschaft in der ##MS_ServerStateReader##
Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE
-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##
-Serverrolle erforderlich.
Berechtigungen für SQL Server 2022 und höher
Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.
Beispiele
A. Identifizieren von Aufgaben aus blockierten Sitzungen
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Anzeigen von Wartevorgängen pro Verbindung
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. Anzeigen von Warteaufgaben für alle Benutzerprozesse mit zusätzlichen Informationen
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 owt
INNER JOIN sys.dm_exec_sessions es ON owt.session_id = es.session_id
INNER JOIN sys.dm_exec_requests er ON es.session_id = er.session_id
OUTER APPLY sys.dm_exec_sql_text (er.sql_handle) est
OUTER APPLY sys.dm_exec_query_plan (er.plan_handle) eqp
WHERE es.is_user_process = 1
ORDER BY owt.session_id;
GO