sys.dm_os_tasks (Transact-SQL)

Aplica-se a: simSQL Server (todas as versões compatíveis) SimBanco de Dados SQL do Azure SimInstância Gerenciada do Azure SQL simAzure Synapse Analytics simParallel Data Warehouse

Retorna uma linha para cada tarefa que está ativa na instância do SQL Server. Uma tarefa é a unidade básica de execução em SQL Server. Exemplos de tarefas incluem uma consulta, um logon, um logoff e tarefas do sistema, como atividade de limpeza fantasma, atividade de ponto de verificação, log writer, 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 de Azure Synapse Analytics ou , use o nome PDW (Analytics Platform System) 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, 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 é pai do objeto.
pdw_node_id int Aplica-se a: Azure Synapse Analytics , PDW (Analytics Platform System)

O identificador do nó em que essa distribuição está.

Permissões

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

Em Banco de Dados SQL de serviço Básico, S0 e S1 e para bancos de dados em pools elásticos, a conta de administrador do servidor, a conta de administrador do Azure Active Directory ou a associação na função de servidor é ##MS_ServerStateReader## necessária. Em todos os outros Banco de Dados SQL de serviço, a permissão no banco de dados ou a associação à VIEW DATABASE STATE função de servidor é ##MS_ServerStateReader## necessária.

Exemplos

a. 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 encontrar a Opção de configuração de servidor Configurar o grau máximo de paralelismo 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  

Consulte Também

SQL Server Exibições de gerenciamento dinâmico relacionadas ao sistema operacional (transact-SQL)
Guia de arquitetura de thread e tarefa