Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Analítica (PDW)
Base de datos SQL en Microsoft Fabric
Devuelve información sobre la cola de tareas que están esperando en algún recurso. Para obtener más información sobre las tareas, consulte la guía de arquitectura de subprocesos y tareas.
Nota:
Para llamar a esto desde Azure Synapse Analytics o Analytics Platform System (PDW), use el nombre sys.dm_pdw_nodes_os_waiting_tasks. El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.
| Nombre de la columna | Tipo de datos | Descripción |
|---|---|---|
waiting_task_address |
varbinary(8) | Dirección de la tarea a la espera. |
session_id |
smallint | Id. de la sesión asociada a la tarea. |
exec_context_id |
int | Id. del contexto de ejecución asociado a la tarea. |
wait_duration_ms |
bigint | Tiempo de espera total para este tipo de espera, en milisegundos. Esta vez es inclusiva de signal_wait_time. |
wait_type |
nvarchar(60) | Nombre del tipo de espera. Para obtener más información, consulte sys.dm_os_wait_stats. |
resource_address |
varbinary(8) | Dirección del recurso por el que la tarea está esperando. |
blocking_task_address |
varbinary(8) | Tarea que alberga actualmente este recurso. |
blocking_session_id |
smallint | Identificador de la sesión que bloquea la solicitud. Si esta columna es NULL, la solicitud no está bloqueada o la información de sesión de la sesión de bloqueo no está disponible (o no se puede identificar).-2 = El recurso de bloqueo es propiedad de una transacción distribuida huérfana.-3 = El recurso de bloqueo es propiedad de una transacción de recuperación diferida.-4
=
session_id del propietario del bloqueo del bloqueo temporal no se pudo determinar debido a las transiciones de estado de bloqueo temporal interno. |
blocking_exec_context_id |
int | Id. del contexto de ejecución de la tarea de bloqueo. |
resource_description |
nvarchar(3072) | Descripción del recurso que se va a consumir. Para obtener más información, vea La columna resource_description. |
pdw_node_id |
int | Identificador del nodo en el que se encuentra esta distribución. Se aplica a: Azure Synapse Analytics and Analytics Platform System (PDW) |
Columna resource_description
La resource_description columna tiene los siguientes valores posibles.
Propietario del recurso del grupo de subprocesos
threadpool id=scheduler<hex-address>
Propietario del recurso de consulta en paralelo
exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>
Tipo de espera de Exchange
e_waitNonee_waitPipeNewRowe_waitPipeGetRowe_waitSynchronizeConsumerOpene_waitPortOpene_waitPortClosee_waitRange
Bloqueo del propietario del recurso
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>puede ser:- Para
DATABASE:databaselock subresource=<databaselock-subresource> dbid=<db-id> - Para
FILE:filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id> - Para
OBJECT:objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id> - Para
PAGE:pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource> - Para
Key:keylock hobtid=<hobt-id> dbid=<db-id> - Para
EXTENT:extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Para
RID:ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Para
APPLICATION:applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id> - Para
METADATA:metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id> - Para
HOBT:hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id> - Para
ALLOCATION_UNIT:allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- Para
<mode>puede ser: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
Propietario del recurso externo
Externo ExternalResource=<wait-type>
Propietario del recurso genérico
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Propietario del recurso de bloqueo temporal
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
Propietario del recurso XACT (transacción)
Se produce cuando el bloqueo optimizado está habilitado:
-
xactlock:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
Permisos
SQL Server 2019 (15.x) y versiones anteriores requieren VIEW SERVER STATE permiso.
SQL Server 2022 (16.x) y versiones posteriores, y SQL Server y Azure SQL Managed Instance, requieren VIEW SERVER PERFORMANCE STATE permiso en el servidor.
En los objetivos de servicio básico de Azure SQL Database, S0 y S1 , y para las bases de datos de grupos elásticos, se requiere la cuenta de administrador del servidor , la cuenta de administrador de Microsoft Entra o la pertenencia al rol de ##MS_ServerStateReader##servidor . En el resto de objetivos del servicio de SQL Database, se requiere el permiso VIEW DATABASE STATE en la base de datos o la pertenencia en el rol del servidor ##MS_ServerStateReader##.
Ejemplos
A Identificación de tareas de sesiones bloqueadas
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Visualización de tareas en espera por conexión
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. Visualización de tareas en espera para todos los procesos de usuario con información adicional
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