sys.dm_os_tasks (Transact-SQL)
Retorna uma linha para cada tarefa que está ativa na instância do SQL Server.
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
task_address |
varbinary(8) |
Endereço de memória do objeto. |
task_state |
nvarchar(60) |
O estado da tarefa. Pode ser um dos seguintes: PENDING: Esperando por um thread de trabalho. RUNNABLE: Executável, mas esperando receber um quantum. RUNNING: Atualmente em execução no agendador. SUSPENDED: Tem um trabalhador, mas está esperando por um evento. DONE: Concluído. SPINLOOP: Preso em um spinlock. |
context_switches_count |
int |
Número de alternâncias de contexto de agendador que esta tarefa completou. |
pending_io_count |
int |
Número de E/Ss físicas executadas por esta tarefa. |
pending_io_byte_count |
bigint |
Contagem total de bytes de E/Ss que são executadas por esta tarefa. |
pending_io_byte_average |
int |
Contagem média de bytes de E/Ss que são executadas por esta tarefa. |
scheduler_id |
int |
ID do agendador pai. Este é um identificador das informações de agendador para esta tarefa. Para obter mais informações, consulte sys.dm_os_schedulers (Transact-SQL). |
session_id |
smallint |
ID da sessão que está associado à tarefa. |
exec_context_id |
int |
ID do contexto de execução que está associado à tarefa. |
request_id |
int |
ID da solicitação da tarefa. Para obter mais informações, consulte sys.dm_exec_requests (Transact-SQL). |
worker_address |
varbinary(8) |
Endereço de memória do trabalhador que está executando a tarefa. NULL = A tarefa está esperando que um trabalhador possa ser executado ou a execução da tarefa foi recém-concluída. Para obter mais informações, consulte sys.dm_os_workers (Transact-SQL). |
host_address |
varbinary(8) |
Endereço de memória do host. 0 = A hospedagem não foi usada para criar a tarefa. Isto ajuda a identificar o host que foi usado para criar esta tarefa. Para obter mais informações, consulte sys.dm_os_hosts (Transact-SQL). |
parent_task_address |
varbinary(8) |
Endereço de memória da tarefa que é o pai do objeto. |
Permissão
Requer a permissão VIEW SERVER STATE no servidor.
Exemplos
A. Monitorando solicitações paralelas
Para solicitações que são executadas em paralelo, você verá várias linhas para a mesma combinação de (<session_id>, <request_id>). Use a consulta a seguir para localizar o grau de paralelismo de todas as solicitações ativas.
Observação |
---|
Um request_id é exclusivo em uma sessão. |
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. Associando IDs de sessão a threads do Windows
Você pode usar a consulta a seguir para associar um valor de ID de sessão a um ID de thread do Windows. Depois, poderá monitorar o desempenho do thread no Monitor de Desempenho do Windows. A consulta a seguir não retorna informações de sessões que estão suspensas.
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