Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Datenbank in Microsoft Fabric
Gibt Informationen zur Warteschlange von Tasks zurück, die auf eine Ressource warten. Weitere Informationen zu Aufgaben finden Sie im Leitfaden zur Thread- und Aufgabenarchitektur.
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. Weitere Informationen finden Sie unter sys.dm_os_wait_stats. |
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 verbrauchten Ressource. Weitere Informationen finden Sie in der Spalte resource_description. |
pdw_node_id |
int | Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet. Gilt für: Azure Synapse Analytics and Analytics Platform System (PDW) |
Die resource_description Spalte
Die resource_description Spalte weist die folgenden möglichen Werte auf.
Threadpoolressourcenbesitzer
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_waitNonee_waitPipeNewRowe_waitPipeGetRowe_waitSynchronizeConsumerOpene_waitPortOpene_waitPortClosee_waitRange
Ressourcenbesitzer sperren
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>kann Folgendes sein:- Für
DATABASE:databaselock subresource=<databaselock-subresource> dbid=<db-id> - Für
FILE:filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id> - Für
OBJECT: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
Key:keylock hobtid=<hobt-id> dbid=<db-id> - Für
EXTENT: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
APPLICATION:applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id> - Für
METADATA: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
<mode>kann Folgendes 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-U, RangeX-X
Besitzer externer Ressourcen
Äußerlich ExternalResource=<wait-type>
Generischer Ressourcenbesitzer
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Besitzer der Latch-Ressource
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
XACT(Transaction)-Ressourcenbesitzer
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
SQL Server 2019 (15.x) und frühere Versionen erfordern VIEW SERVER STATE eine Berechtigung.
SQL Server 2022 (16.x) und höhere Versionen sowie SQL Server und Azure SQL Managed Instance erfordern VIEW SERVER PERFORMANCE STATE berechtigungen auf dem Server.
Für Azure SQL Database Basic, 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.
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 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