Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
База данных SQL в Microsoft Fabric
Возвращает одну строку для каждой задачи, активной в экземпляре SQL Server. Задача — это базовая единица выполнения в SQL Server. Примерами задач являются запрос, имя входа, выход и системные задачи, такие как действие очистки призраков, действие контрольной точки, запись журналов, параллельное повторное выполнение. Дополнительные сведения о задачах см. в руководстве по архитектуре потоков и задач.
Note
Чтобы вызвать это из 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, система платформы аналитики (PDW) Идентификатор узла, на который находится это распределение. |
Permissions
Для SQL Server и Управляемого экземпляра SQL требуется разрешение VIEW SERVER STATE.
В базе данных SQL базовые, S0и S1 целей службы, а также для баз данных в эластичных пулах, требуется учетная запись администратора сервера сервера, учетная запись администратора Microsoft Entra или членство в роли сервера ##MS_ServerStateReader##. Для всех остальных целей службы базы данных SQL требуется разрешение VIEW DATABASE STATE на базу данных или членство в роли сервера ##MS_ServerStateReader##.
Разрешения для SQL Server 2022 и более поздних версий
Требуется VIEW разрешение на состояние производительности сервера на сервере.
Examples
А. Наблюдение за параллельными запросами
Для запросов, выполняемых параллельно, вы увидите несколько строк для одного сочетания (<,>< Используйте следующий запрос, чтобы найти параметр конфигурации сервера с максимальной степенью параллелизма для всех активных запросов.
Note
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)
Руководство по архитектуре потоков и задач