Compartir a través de


sys.dm_os_tasks (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Devuelve una fila para cada tarea que está activa en la instancia de SQL Server. Una tarea es la unidad básica de ejecución en SQL Server. Algunos ejemplos de tareas incluyen una consulta, un inicio de sesión, un cierre de sesión y tareas del sistema, como la actividad de limpieza fantasma, la actividad de punto de comprobación, el escritor de registros, la actividad de puesta al día en paralelo. Para obtener más información sobre las tareas, consulte la Guía de arquitectura de subprocesos y tareas.

Nota:

Para llamarlo desde Azure Synapse Analytics o Analytics Platform System (PDW), use el nombre sys.dm_pdw_nodes_os_tasks. El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Nombre de la columna Tipo de datos Descripción
task_address varbinary(8) Dirección de memoria del objeto.
task_state nvarchar(60) Estado de la tarea. Este 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 subproceso.
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, consulte 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.
id_de_solicitud int Id. de la solicitud de la tarea. Para obtener más información, consulte 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, consulte 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, consulte sys.dm_os_hosts (Transact-SQL).
parent_task_address varbinary(8) Dirección de memoria de la tarea que es el elemento primario del objeto.
pdw_node_id int Se aplica a: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW)

Identificador del nodo en el que se encuentra esta distribución.

Permisos

En SQL Server y SQL Managed Instance, requiere el permiso VIEW SERVER STATE.

En los objetivos de servicio Básico, S0 y S1 de SQL Database y para bases de datos en grupos elásticos, se requiere la cuenta de administrador del servidor, la cuenta de administrador Microsoft Entra o la pertenencia al ##MS_ServerStateReader## rol del 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##.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VER ESTADO DE RENDIMIENTO DEL SERVIDOR en el servidor.

Ejemplos

A Supervisar solicitudes paralelas

En el caso de las solicitudes que se ejecutan en paralelo, verá varias filas para la misma combinación de (<session_id>, <request_id>). Use la consulta siguiente para buscar la opción Configurar el grado máximo de paralelismo del servidor para todas las solicitudes activas.

Nota:

Un request_id es único dentro de 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 identificadores de sesión con subprocesos de Windows

Puede utilizar la siguiente consulta para asociar un valor de identificador de sesión 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  

Consulte también

Vistas de administración dinámica relacionadas con el sistema operativo de SQL Server (Transact-SQL)
Guía de arquitectura de subprocesos y tareas