sys.dm_os_tasks (Transact-SQL)

Возвращает одну строку для каждой активной задачи в экземпляре SQL Server.

Имя столбца

Тип данных

Описание

task_address

varbinary(8)

Адрес объекта в памяти.

task_state

nvarchar(60)

Состояние задачи. Может иметь одно из следующих значений.

PENDING: ожидание рабочего потока.

RUNNABLE: задачу можно запустить, но она ожидает получения такта.

RUNNING: выполняется в данный момент в планировщике.

SUSPENDED: у задачи есть исполнитель, но она ожидает события.

DONE: выполнена.

SPINLOOP: заблокирована с ожиданием из-за занятости.

context_switches_count

int

Число переключений контекста планировщика, которые задача уже выполнила.

pending_io_count

int

Количество физических операций ввода-вывода, выполняемых этой задачей.

pending_io_byte_count

bigint

Суммарное количество байт, обработанных в операциях ввода-вывода, выполняемых этой задачей.

pending_io_byte_average

int

Среднее количество байт, обработанных в операциях ввода-вывода, выполняемых этой задачей.

scheduler_id

int

Идентификатор родительского планировщика. Это дескриптор сведений планировщика для этой задачи. Дополнительные сведения см. в разделе sys.dm_os_schedulers (Transact-SQL).

session_id

smallint

Идентификатор сеанса, связанного с задачей.

exec_context_id

int

Идентификатор контекста выполнения, связанного с задачей.

request_id

int

Идентификатор запроса задачи. Дополнительные сведения см. в разделе sys.dm_exec_requests (Transact-SQL).

worker_address

varbinary(8)

Адрес в памяти для исполнителя, выполняющего задачу.

NULL = Задача либо ожидает готовности исполнителя, либо выполнение задачи только что завершилось.

Дополнительные сведения см. в разделе sys.dm_os_workers (Transact-SQL).

host_address

varbinary(8)

Адрес сервера в памяти.

0 = Задача создавалась без помощи сервера. Помогает идентифицировать сервер, использованный для создания этой задачи.

Дополнительные сведения см. в разделе sys.dm_os_hosts (Transact-SQL).

адрес родительской задачи

varbinary(8)

Адрес в памяти задачи, являющейся родительской задачей объекта.

Разрешение

Требуется разрешение VIEW SERVER STATE на сервере.

Примеры

А.Наблюдение за параллельными запросами

Для запросов, которые выполняются параллельно, будет отображено несколько строк для каждого сочетания (<идентификатор_сеанса>, <идентификатор_запроса>). Используйте следующий запрос, чтобы получить Настройка параметра конфигурации сервера max degree of parallelism для всех активных запросов.

ПримечаниеПримечание

Идентификатор_запроса является уникальным в пределах сеанса.

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;

Б.Сопоставление идентификатора сеанса с потоками Windows

Можно использовать следующий запрос для сопоставления значения идентификатора сеанса со значением идентификатора потока Windows. Затем можно наблюдать за производительностью потока в системном мониторе Windows. Следующий запрос не возвращает сведений для сеансов, находящихся в ждущем режиме.

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

См. также

Справочник

Динамические административные представления и функции (Transact-SQL)

Динамические административные представления, относящиеся к операционной системе SQL Server (Transact-SQL)