sys.dm_os_tasks (Transact-SQL)
Devuelve una fila por cada tarea activa en la instancia de SQL Server.
Nombre de columna |
Tipo de datos |
Descripción |
---|---|---|
task_address |
varbinary(8) |
Dirección de memoria del objeto. |
task_state |
nvarchar(60) |
Estado de la tarea. Puede ser uno de los siguientes: PENDING: esperando un subproceso de trabajo. RUNNABLE: se puede ejecutar, pero está esperando a recibir un cuanto. RUNNING: ejecutándose actualmente en el programador. SUSPENDED: tiene un trabajador, pero está esperando un evento. DONE: completado. SPINLOOP: atrapado en un bloqueo por bucle. |
context_switches_count |
int |
Número de cambios de contexto del programador que esta tarea ha completado. |
pending_io_count |
int |
Número de entradas y salidas físicas realizadas por esta tarea. |
pending_io_byte_count |
bigint |
Recuento total de bytes de las entradas y salidas realizadas por esta tarea. |
pending_io_byte_average |
int |
Recuento promedio de bytes de las entradas y salidas realizadas por esta tarea. |
scheduler_id |
int |
Id. del programador primario. Es un identificador de la información del programador para esta tarea. Para obtener más información, vea sys.dm_os_schedulers (Transact-SQL). |
session_id |
smallint |
Id. de la sesión que está asociada a la tarea. |
exec_context_id |
int |
Id. del contexto de ejecución que está asociado a la tarea. |
request_id |
int |
Id. de la solicitud de la tarea. Para obtener más información, vea sys.dm_exec_requests (Transact-SQL). |
worker_address |
varbinary(8) |
Dirección de memoria del trabajador que ejecuta la tarea. NULL = La tarea espera un trabajador que pueda ejecutarla o la tarea acaba de finalizar la ejecución. Para obtener más información, vea sys.dm_os_workers (Transact-SQL). |
host_address |
varbinary(8) |
Dirección de memoria del host. 0 = No se ha usado el hospedaje para crear la tarea. Esto ayuda a identificar el host que se ha utilizado para crear esta tarea. Para obtener más información, vea sys.dm_os_hosts (Transact-SQL). |
parent_task_address |
varbinary(8) |
Dirección de memoria de la tarea primaria del objeto. |
Permiso
Requiere el permiso VIEW SERVER STATE en el servidor.
Ejemplos
A. Supervisar solicitudes paralelas
Para solicitudes que se ejecutan en paralelo, verá varias filas para la misma combinación de (<session_id>, <request_id>). Use la siguiente consulta para conocer el grado de paralelismo de todas las solicitudes activas.
Nota
El valor request_id es único en una sesión.
SELECT
task_address,
task_state,
context_switches_count,
pending_io_count,
pending_io_byte_count,
pending_io_byte_average,
scheduler_id,
session_id,
exec_context_id,
request_id,
worker_address,
host_address
FROM sys.dm_os_tasks
ORDER BY session_id, request_id;
B. Asociar Id. de sesión con subprocesos de Windows
Puede usar la siguiente consulta para asociar un valor Session ID a un identificador de subproceso de Windows. A continuación, puede supervisar el rendimiento del subproceso en el Monitor de rendimiento de Windows. La siguiente consulta no devuelve información para sesiones en espera.
SELECT STasks.session_id, SThreads.os_thread_id
FROM sys.dm_os_tasks AS STasks
INNER JOIN sys.dm_os_threads AS SThreads
ON STasks.worker_address = SThreads.worker_address
WHERE STasks.session_id IS NOT NULL
ORDER BY STasks.session_id;
GO