sys.dm_os_tasks (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии) ДаБаза данных SQL Azure ДаУправляемый экземпляр SQL Azure даAzure Synapse Analytics даПараллельное хранилище данных

Возвращает одну строку для каждой активной задачи в экземпляре SQL Server. Задача — это базовая единица выполнения в SQL Server. К примерам задач относятся запрос, имя входа, выход из системы и системные задачи, такие как действие очистки фантомов, активность контрольных точек, модуль записи журнала, параллельное действие повтора. Дополнительные сведения о задачах см. в разделе руководств по архитектуре потоков и задач.

Примечание

Чтобы вызвать эту функцию из Azure Synapse Analytics или Система платформы аналитики (PDW) , используйте имя sys.dm_pdw_nodes_os_tasks. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Имя столбца Тип данных Описание
task_address varbinary(8) Адрес объекта в памяти.
task_state nvarchar(60) Состояние задачи. Оно может быть одним из следующих.

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

ГОТОВ к запуску: готово к запуску, но ожидает получения такта.

ВЫПОЛНЯЕТСЯ: в данный момент выполняется в планировщике.

SUSPENDED: имеет рабочий, но ожидает события.

Готово: завершено.

СПИНЛУП: завис в спин-блокировке.
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).
parent_task_address varbinary(8) Адрес в памяти задачи, являющейся родительской задачей объекта.
pdw_node_id int Применимо к: Azure Synapse Analytics , Система платформы аналитики (PDW)

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

Разрешения

для SQL Server SQL Управляемый экземпляр требуется VIEW SERVER STATE разрешение.

в База данных SQL целевых показателей служб Basic, S0 и S1 , а также для баз данных в эластичных пулах, требуется учетная запись администратора сервера , учетная запись администратора Azure Active Directory или членство в ##MS_ServerStateReader## роли сервера . для всех остальных целей База данных SQL служб VIEW DATABASE STATE требуется разрешение на базу данных или членство в ##MS_ServerStateReader## роли сервера.

Примеры

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

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

Примечание

Request_id уникален в пределах сеанса.

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  

См. также:

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