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