sys.dm_os_waiting_tasks (Transact-SQL)
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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:
- Externen
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>)
XACT-Ressourcenbesitzer im Zusammenhang mit der optimierten Sperre:
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 SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto 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
Zugehöriger Inhalt
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für