sys.dm_os_tasks (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Returnerar en rad för varje aktiv uppgift i SQL Server-instansen. En uppgift är den grundläggande exekveringsenheten i SQL Server. Exempel på uppgifter inkluderar en förfrågan, inloggning, utloggning och systemuppgifter som spökrensningsaktivitet, kontrollpunktaktivitet, loggskrivare, parallell ombyggnadsaktivitet. För mer information om uppgifter, se Tråden och Task Architecture Guide.

Anmärkning

För att kalla detta från Azure Synapse Analytics eller Analytics Platform System (PDW), använd namnet sys.dm_pdw_nodes_os_tasks. Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Kolumnnamn Datatyp Description
task_address varbinary(8) Minnesadressen till objektet.
task_state nvarchar(60) Uppgiftens tillstånd. Detta kan vara något av följande:

VÄNTAR: Väntar på en arbetstråd.

RUNNBAR: Körbar, men väntar på att få en kvant.

LÖPER: Körs just nu på schemaläggaren.

AVSTÄNGD: Har en arbetare, men väntar på ett evenemang.

KLART: Slutfört.

SPINLOOP: Fast i en spinlock.
context_switches_count int Antal schemaläggar-kontextbyten som denna uppgift har slutfört.
pending_io_count int Antal fysiska I/O:n som utförs av denna uppgift.
pending_io_byte_count bigint Totalt byteantal I/O:er som utförs av denna uppgift.
pending_io_byte_average int Genomsnittligt byteantal av I/O:er som utförs av denna uppgift.
scheduler_id int ID för föräldraschemaläggaren. Detta är ett handtag till schemaläggarinformationen för denna uppgift. För mer information, se sys.dm_os_schedulers (Transact-SQL).
session_id smallint ID för sessionen som är kopplad till uppgiften.
exec_context_id int Exekveringskontext-ID som är kopplat till uppgiften.
request_id int ID på uppgiftens begäran. Mer information finns i sys.dm_exec_requests (Transact-SQL).
worker_address varbinary(8) Minnesadressen till den arbetare som kör uppgiften.

NULL = Uppgiften väntar antingen på att en arbetare ska kunna köras, eller så har uppgiften precis körts klart.

För mer information, se sys.dm_os_workers (Transact-SQL).
host_address varbinary(8) Värdens minnesadress.

0 = Hosting användes inte för att skapa uppgiften. Detta hjälper till att identifiera värden som användes för att skapa denna uppgift.

För mer information, se sys.dm_os_hosts (Transact-SQL).
parent_task_address varbinary(8) Minnesadressen till uppgiften som är objektets förälder.
pdw_node_id int gäller för: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifieraren för noden som den här fördelningen är på.

Permissions

På SQL Server och SQL Managed Instance kräver VIEW SERVER STATE behörighet.

I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE STATE behörighet för databasen eller medlemskap i ##MS_ServerStateReader## serverrollen.

Behörigheter för SQL Server 2022 och senare

Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.

Examples

A. Övervakning av parallella förfrågningar

För förfrågningar som körs parallellt kommer du att se flera rader för samma kombination av (<session_id>, <request_id>). Använd följande fråga för att hitta alternativet Konfigurera maximal grad av parallellism Serverkonfiguration för alla aktiva förfrågningar.

Anmärkning

En request_id är unik inom en session.

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. Associera sessions-ID:n med Windows-trådar

Du kan använda följande fråga för att associera ett sessions-ID med ett Windows-tråd-ID. Du kan sedan övervaka trådens prestanda i Windows Performance Monitor. Följande fråga ger inte information för sessioner som är i viloläge.

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  

Se även

SQL Server-operativsystemrelaterade dynamiska hanteringsvyer (Transact-SQL)
Tråd- och uppgiftsarkitekturguide