Compartir a través de


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 alojamiento 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).

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>). Utilice 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 utilizar la siguiente consulta para asociar un valor de Id. de sesión a un Id. 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