Partilhar via


sys.dm_os_tasks (Transact-SQL)

Aplica-se a:Banco de Dados SQL doAzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

Devolve 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 login, um logout e tarefas do sistema como atividade de limpeza de fantasmas, atividade de checkpoint, escrita de logs, atividade de refazer paralelamente. Para mais informações sobre tarefas, consulte o Guia de Thread e Arquitetura de Tarefas.

Observação

Para chamar isto a partir do Azure Synapse Analytics ou Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_os_tasks. Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.

Nome da coluna Tipo de dados Description
task_address varbinary(8) Endereço de memória do objeto.
task_state nvarchar(60) Estado da tarefa. Pode ser uma das seguintes opções:

PENDENTE: À espera de um tópico de trabalho.

RUNNABLE: Executável, mas à espera de receber um quantum.

A CORRER: Atualmente a funcionar no agendador.

SUSPENSO: Tem um trabalhador, mas está à espera de um evento.

FEITO: Concluído.

SPINLOOP: Preso num spinlock.
context_switches_count int Número de trocas de contexto do agendador que esta tarefa completou.
pending_io_count int Número de E/S físicas realizadas por esta tarefa.
pending_io_byte_count bigint Contagem total de bytes de E/S realizadas por esta tarefa.
pending_io_byte_average int Contagem média de bytes de E/S realizadas por esta tarefa.
scheduler_id int ID do agendador principal. Este é um handle para a informação do agendador para esta tarefa. Para mais informações, consulte sys.dm_os_schedulers (Transact-SQL).
session_id smallint ID da sessão associada à tarefa.
exec_context_id int ID de contexto de execução associado à tarefa.
request_id int ID do pedido 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á a executar a tarefa.

NULL = A tarefa é esperar que um trabalhador consiga executar, ou a tarefa acabou de terminar.

Para mais informações, consulte sys.dm_os_workers (Transact-SQL).
host_address varbinary(8) Endereço de memória do anfitrião.

0 = O alojamento não foi usado para criar a tarefa. Isto ajuda a identificar o host que foi usado para criar esta tarefa.

Para 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.
pdw_node_id int Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)

O identificador do nó em que esta distribuição se encontra.

Permissions

No SQL Server e na Instância Gerenciada do SQL, requer VIEW SERVER STATE permissão.

No Banco de Dados SQL Basic, S0e S1 objetivos de serviço e para bancos de dados em pools elásticos , a conta de de administrador do servidor, a conta de de administrador do Microsoft Entra ou a associação aode função de servidor ##MS_ServerStateReader## é necessária. Em todos os outros objetivos de serviço do Banco de dados SQL, é necessária a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Examples

A. Monitorização de pedidos paralelos

Para pedidos executados em paralelo, verá várias linhas para a mesma combinação de (<session_id>, <request_id>). Use a seguinte consulta para encontrar a opção Configurar o grau máximo de paralelismo Configuração do servidor para todos os pedidos ativos.

Observação

Um request_id é único dentro de 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. Associar IDs de sessão a threads do Windows

Pode usar a seguinte consulta para associar um valor de ID de sessão a um ID de thread do Windows. Pode então monitorizar o desempenho do thread no Windows Performance Monitor. A consulta seguinte não devolve informação para sessões que estejam em suspensão.

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  

Consulte também

Exibições de gerenciamento dinâmico relacionadas ao sistema operacional SQL Server (Transact-SQL)
Guia de Arquitetura de Threads e Tarefas