Compartilhar via


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