Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Base de données SQL dans Microsoft Fabric
Renvoie les informations sur la file d’attente des tâches en attente de certaines ressources. Pour plus d’informations sur les tâches, consultez le guide d’architecture des threads et des tâches.
Remarque
Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme Analytics (PDW), utilisez le nom sys.dm_pdw_nodes_os_waiting_tasks. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.
| Nom de la colonne | Type de données | Description |
|---|---|---|
waiting_task_address |
varbinary(8) | Adresse de la tâche en attente. |
session_id |
smallint | ID de la session associée à la tâche. |
exec_context_id |
int | ID du contexte d'exécution associé à la tâche. |
wait_duration_ms |
bigint | Temps d'attente total de ce type d'attente (en millisecondes). Cette fois-ci est inclusive de signal_wait_time. |
wait_type |
nvarchar(60) | Nom du type d'attente. Pour plus d’informations, consultez sys.dm_os_wait_stats. |
resource_address |
varbinary(8) | Adresse de la ressource que la tâche attend. |
blocking_task_address |
varbinary(8) | Tâche qui mobilise actuellement cette ressource. |
blocking_session_id |
smallint | ID de la session bloquant la requête. Si cette colonne est NULL, la requête n’est pas bloquée ou les informations de session de la session bloquante ne sont pas disponibles (ou ne peuvent pas être identifiées).-2 = La ressource bloquante appartient à une transaction distribuée orpheline.-3 = La ressource bloquante appartient à une transaction de récupération différée.-4
=
session_id du propriétaire du verrou bloquant n’a pas pu être déterminé en raison de transitions d’état de verrou interne. |
blocking_exec_context_id |
int | ID du contexte d'exécution de la tâche bloquante. |
resource_description |
nvarchar(3072) | Description de la ressource consommée. Pour plus d’informations, consultez la colonne resource_description. |
pdw_node_id |
int | Identificateur du nœud sur lequel cette distribution est activée. S’applique à : Azure Synapse Analytics and Analytics Platform System (PDW) |
Colonne resource_description
La resource_description colonne a les valeurs possibles suivantes.
Propriétaire de la ressource de pool de threads
threadpool id=scheduler<hex-address>
Propriétaire de la ressource de requête parallèle
exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>
Type d’attente Exchange
e_waitNonee_waitPipeNewRowe_waitPipeGetRowe_waitSynchronizeConsumerOpene_waitPortOpene_waitPortClosee_waitRange
Verrouiller le propriétaire de la ressource
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
Voici à quoi
<type-specific-description>peut correspondre :- Pour
DATABASE:databaselock subresource=<databaselock-subresource> dbid=<db-id> - Pour
FILE:filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id> - Pour
OBJECT:objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id> - Pour
PAGE:pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource> - Pour
Key:keylock hobtid=<hobt-id> dbid=<db-id> - Pour
EXTENT:extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Pour
RID:ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Pour
APPLICATION:applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id> - Pour
METADATA:metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id> - Pour
HOBT:hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id> - Pour
ALLOCATION_UNIT:allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- Pour
Voici à quoi
<mode>peut correspondre :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
Propriétaire de ressources externes
Externe ExternalResource=<wait-type>
Propriétaire de ressource générique
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Propriétaire de la ressource Detch
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
Propriétaire de la ressource XACT (transaction)
Se produit lorsque le verrouillage optimisé est activé :
-
xactlock:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
autorisations
SQL Server 2019 (15.x) et les versions antérieures nécessitent VIEW SERVER STATE une autorisation.
SQL Server 2022 (16.x) et versions ultérieures, et SQL Server et Azure SQL Managed Instance, nécessitent VIEW SERVER PERFORMANCE STATE une autorisation sur le serveur.
Sur les objectifs de service Azure SQL Database Basic, S0 et S1 , et pour les bases de données dans des pools élastiques, le compte d’administrateur du serveur , le compte d’administrateur Microsoft Entra ou l’appartenance au ##MS_ServerStateReader##rôle serveur est nécessaire. Sur tous les autres objectifs de service SQL Database, l’autorisation VIEW DATABASE STATE sur la base de données ou l’appartenance au rôle serveur ##MS_ServerStateReader## est requise.
Exemples
R. Identifier les tâches des sessions bloquées
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Afficher les tâches en attente par connexion
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. Afficher les tâches en attente pour tous les processus utilisateur avec des informations supplémentaires
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