sys.dm_os_tasks (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada 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 de SQL Database Basic, 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##
.
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