sys.dm_os_tasks (Transact-SQL)sys.dm_os_tasks (Transact-SQL)
Применимо к:Applies to: SQL ServerSQL Server (все поддерживаемые версии)
SQL ServerSQL Server (all supported versions)
База данных SQL AzureAzure SQL Database
База данных SQL AzureAzure SQL Database
Управляемый экземпляр SQL AzureAzure SQL Managed Instance
Управляемый экземпляр SQL AzureAzure SQL Managed Instance
Azure Synapse AnalyticsAzure Synapse Analytics
Azure Synapse AnalyticsAzure Synapse Analytics
Параллельное хранилище данныхParallel Data Warehouse
Параллельное хранилище данныхParallel Data Warehouse
SQL ServerSQL Server (все поддерживаемые версии)
SQL ServerSQL Server (all supported versions)
База данных SQL AzureAzure SQL Database
База данных SQL AzureAzure SQL Database
Управляемый экземпляр SQL AzureAzure SQL Managed Instance
Управляемый экземпляр SQL AzureAzure SQL Managed Instance
Azure Synapse AnalyticsAzure Synapse Analytics
Azure Synapse AnalyticsAzure Synapse Analytics
Параллельное хранилище данныхParallel Data Warehouse
Параллельное хранилище данныхParallel Data Warehouse
Возвращает одну строку для каждой активной задачи в экземпляре SQL ServerSQL Server.Returns one row for each task that is active in the instance of SQL ServerSQL Server. Задача — это базовая единица выполнения в SQL Server.A task is the basic unit of execution in SQL Server. К примерам задач относятся запрос, имя входа, выход из системы и системные задачи, такие как действие очистки фантомов, активность контрольных точек, модуль записи журнала, параллельное действие повтора.Examples of tasks include a query, a login, a logout, and system tasks like ghost cleanup activity, checkpoint activity, log writer, parallel redo activity. Дополнительные сведения о задачах см. в разделе руководств по архитектуре потоков и задач.For more information about tasks, see the Thread and Task Architecture Guide.
Примечание
Чтобы вызвать эту функцию из Azure Synapse AnalyticsAzure Synapse Analytics или Параллельное хранилище данныхParallel Data Warehouse , используйте имя sys.dm_pdw_nodes_os_tasks.To call this from Azure Synapse AnalyticsAzure Synapse Analytics or Параллельное хранилище данныхParallel Data Warehouse, use the name sys.dm_pdw_nodes_os_tasks.
Имя столбцаColumn name | Тип данныхData type | ОписаниеDescription |
---|---|---|
task_addresstask_address | varbinary(8)varbinary(8) | Адрес объекта в памяти.Memory address of the object. |
task_statetask_state | nvarchar(60)nvarchar(60) | Состояние задачи.State of the task. Оно может быть одним из следующих.This can be one of the following: Ожидание: ожидание рабочего потока.PENDING: Waiting for a worker thread. ГОТОВ к запуску: готово к запуску, но ожидает получения такта.RUNNABLE: Runnable, but waiting to receive a quantum. ВЫПОЛНЯЕТСЯ: в данный момент выполняется в планировщике.RUNNING: Currently running on the scheduler. SUSPENDED: имеет рабочий, но ожидает события.SUSPENDED: Has a worker, but is waiting for an event. Готово: завершено.DONE: Completed. СПИНЛУП: завис в спин-блокировке.SPINLOOP: Stuck in a spinlock. |
context_switches_countcontext_switches_count | intint | Число переключений контекста планировщика, которые задача уже выполнила.Number of scheduler context switches that this task has completed. |
pending_io_countpending_io_count | intint | Количество физических операций ввода-вывода, выполняемых этой задачей.Number of physical I/Os that are performed by this task. |
pending_io_byte_countpending_io_byte_count | bigintbigint | Суммарное количество байт, обработанных в операциях ввода-вывода, выполняемых этой задачей.Total byte count of I/Os that are performed by this task. |
pending_io_byte_averagepending_io_byte_average | intint | Среднее количество байт, обработанных в операциях ввода-вывода, выполняемых этой задачей.Average byte count of I/Os that are performed by this task. |
scheduler_idscheduler_id | intint | Идентификатор родительского планировщика.ID of the parent scheduler. Это дескриптор сведений планировщика для этой задачи.This is a handle to the scheduler information for this task. Дополнительные сведения см. в разделе sys.dm_os_schedulers (Transact-SQL).For more information, see sys.dm_os_schedulers (Transact-SQL). |
session_idsession_id | smallintsmallint | Идентификатор сеанса, связанного с задачей.ID of the session that is associated with the task. |
exec_context_idexec_context_id | intint | Идентификатор контекста выполнения, связанного с задачей.Execution context ID that is associated with the task. |
request_idrequest_id | intint | Идентификатор запроса задачи.ID of the request of the task. Дополнительные сведения см. в разделе sys.dm_exec_requests (Transact-SQL).For more information, see sys.dm_exec_requests (Transact-SQL). |
worker_addressworker_address | varbinary(8)varbinary(8) | Адрес в памяти для исполнителя, выполняющего задачу.Memory address of the worker that is running the task. NULL = задача либо ожидает готовности исполнителя, либо выполнение задачи только что завершилось.NULL = Task is either waiting for a worker to be able to run, or the task has just finished running. Дополнительные сведения см. в разделе sys.dm_os_workers (Transact-SQL).For more information, see sys.dm_os_workers (Transact-SQL). |
host_addresshost_address | varbinary(8)varbinary(8) | Адрес сервера в памяти.Memory address of the host. 0 = задача создавалась без помощи сервера.0 = Hosting was not used to create the task. Помогает идентифицировать сервер, использованный для создания этой задачи.This helps identify the host that was used to create this task. Дополнительные сведения см. в разделе sys.dm_os_hosts (Transact-SQL).For more information, see sys.dm_os_hosts (Transact-SQL). |
parent_task_addressparent_task_address | varbinary(8)varbinary(8) | Адрес в памяти задачи, являющейся родительской задачей объекта.Memory address of the task that is the parent of the object. |
pdw_node_idpdw_node_id | intint | Применимо к: Azure Synapse AnalyticsAzure Synapse Analytics , Параллельное хранилище данныхParallel Data WarehouseApplies to: Azure Synapse AnalyticsAzure Synapse Analytics, Параллельное хранилище данныхParallel Data Warehouse Идентификатор узла, на котором находится данное распределение.The identifier for the node that this distribution is on. |
РазрешенияPermissions
В SQL ServerSQL Server необходимо VIEW SERVER STATE
разрешение.On SQL ServerSQL Server, requires VIEW SERVER STATE
permission.
В базах данных SQL Basic, S0 и S1, а также для баз данных в эластичных пулах требуется учетная запись администратора сервера или учетная запись администратора Azure Active Directory .On SQL Database Basic, S0, and S1 service objectives, and for databases in elastic pools, the server admin account or the Azure Active Directory admin account is required. Для всех остальных целей службы базы данных SQL VIEW DATABASE STATE
разрешение требуется в базе данных.On all other SQL Database service objectives, the VIEW DATABASE STATE
permission is required in the database.
ПримерыExamples
A.A. Наблюдение за параллельными запросамиMonitoring parallel requests
Для запросов, которые выполняются параллельно, вы увидите несколько строк для одного сочетания ( <session_id> , <request_id> ).For requests that are executed in parallel, you will see multiple rows for the same combination of (<session_id>, <request_id>). Используйте следующий запрос, чтобы найти параметр конфигурации сервера max degree of parallelism для всех активных запросов.Use the following query to find the Configure the max degree of parallelism Server Configuration Option for all active requests.
Примечание
Request_id уникален в пределах сеанса.A request_id is unique within a session.
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. Сопоставление идентификатора сеанса с потоками WindowsAssociating session IDs with Windows threads
Можно использовать следующий запрос для сопоставления значения идентификатора сеанса со значением идентификатора потока Windows.You can use the following query to associate a session ID value with a Windows thread ID. Затем можно наблюдать за производительностью потока в системном мониторе Windows.You can then monitor the performance of the thread in the Windows Performance Monitor. Следующий запрос не возвращает сведений для сеансов, находящихся в ждущем режиме.The following query does not return information for sessions that are sleeping.
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
См. также:See Also
SQL Server динамические административные представления, связанные с операционной системой ()Transact-SQL SQL Server Operating System Related Dynamic Management Views (Transact-SQL)
Руководство по архитектуре потоков и задачThread and Task Architecture Guide