Поделиться через


sys.dm_os_tasks (Transact-SQL)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

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

Примечание.

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

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

ОЖИДАНИЕ: ожидание рабочего потока.

RUNNABLE: Runnable, но ожидает получения квантового.

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

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

ГОТОВО: Завершено.

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

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

Разрешения

На SQL Server и управляемом экземпляре SQL необходимо разрешение VIEW SERVER STATE.

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

Разрешения для SQL Server 2022 и более поздних версий

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

Примеры

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

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

Примечание.

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;  

B. Сопоставление идентификатора сеанса с потоками 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)
Руководство по архитектуре потоков и задач