sys.dm_os_tasks (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
Retorna uma linha para cada tarefa ativa na instância do SQL Server. Uma tarefa é a unidade básica de execução no SQL Server. Exemplos de tarefas incluem uma consulta, um logon, um logout e tarefas do sistema, como atividade de limpeza fantasma, atividade de ponto de verificação, gravador de log, atividade de refazer paralela. Para obter mais informações sobre tarefas, consulte o Guia de Arquitetura de Thread e Tarefa.
Observação
Para chamar isso do Azure Synapse Analytics ou do PDW (Analytics Platform System), use o nome sys.dm_pdw_nodes_os_tasks. Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.
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, confira 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, confira 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 é pai do objeto. |
pdw_node_id | int | Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW) O identificador do nó em que essa distribuição está ativada. |
Permissões
No SQL Server e na Instância Gerenciada de SQL, requer a permissão VIEW SERVER STATE
.
Nos objetivos de serviço do Banco de Dados SQL Básico, S0 e S1 e para bancos de dados em pools elásticos, é necessário ter a conta do administrador do servidor, a conta do administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##
função de servidor. Em todos os outros objetivos de serviço do Banco de Dados SQL, a permissão VIEW DATABASE STATE
no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##
são necessárias.
Permissões do SQL Server 2022 e posteriores
É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.
Exemplos
R. Monitorando solicitações paralelas
Para solicitações 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 a opção Configurar o grau máximo de paralelismo do servidor para 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
Confira também
Exibições de gerenciamento dinâmico relacionadas ao sistema operacional do SQL Server (Transact-SQL)
Guia de arquitetura de thread e tarefa