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)
Руководство по архитектуре потоков и задач