Delen via


sys.dm_os_tasks (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)SQL-database in Microsoft Fabric

Geeft één rij terug voor elke taak die actief is in de instantie van SQL Server. Een taak is de basiseenheid van uitvoering in SQL Server. Voorbeelden van taken zijn een query, een login, een uitloggen en systeemtaken zoals ghost cleanup-activiteit, checkpoint-activiteit, logwriter, parallelle redo-activiteit. Voor meer informatie over taken, zie de Thread and Task Architecture Guide.

Opmerking

Om dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW), gebruik de naam sys.dm_pdw_nodes_os_tasks. Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Kolomnaam Gegevenstype Description
task_address varbinary(8) Geheugenadres van het object.
task_state nvarchar(60) Stand van de taak. Dit kan een van de volgende zijn:

IN BEHANDELING: Wacht op een worker-thread.

RUNNABLE: Runnable, maar wacht op een quantum.

LOPEN: Momenteel op de planningsmachine.

GESCHORST: Heeft een werknemer, maar wacht op een evenement.

KLAAR: Voltooid.

SPINLOOP: Vast in een spinlock.
context_switches_count int Aantal contextwisselingen in de scheduler die deze taak heeft voltooid.
pending_io_count int Aantal fysieke I/O's dat door deze taak wordt uitgevoerd.
pending_io_byte_count bigint Totaal aantal bytes aan I/O's dat door deze taak wordt uitgevoerd.
pending_io_byte_average int Gemiddeld aantal bytes aan I/O's die door deze taak worden uitgevoerd.
scheduler_id int ID van de ouderplanner. Dit is een handvat voor de plannerinformatie voor deze taak. Voor meer informatie, zie sys.dm_os_schedulers (Transact-SQL).
session_id smallint ID van de sessie die aan de taak is gekoppeld.
exec_context_id int Uitvoeringscontext-ID die aan de taak is gekoppeld.
request_id int ID van het verzoek voor de taak. Zie sys.dm_exec_requests (Transact-SQL)voor meer informatie.
worker_address varbinary(8) Het geheugenadres van de werknemer die de taak uitvoert.

NULL = De taak wacht ofwel tot een werker kan draaien, of de taak is net klaar met draaien.

Voor meer informatie, zie sys.dm_os_workers (Transact-SQL).
host_address varbinary(8) Geheugenadres van de host.

0 = Hosting werd niet gebruikt om de taak te maken. Dit helpt om de host te identificeren die is gebruikt om deze taak te creëren.

Voor meer informatie, zie sys.dm_os_hosts (Transact-SQL).
parent_task_address varbinary(8) Geheugenadres van de taak die de ouder van het object is.
pdw_node_id int van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW)

De id voor het knooppunt waarop deze distributie zich bevindt.

Permissions

Voor SQL Server en SQL Managed Instance is een machtiging vereist VIEW SERVER STATE .

Voor servicedoelstellingen van SQL Database Basic, S0 en S1 en voor databases in elastische pools is het serverbeheerdersaccount , het Microsoft Entra-beheerdersaccount of het lidmaatschap van de ##MS_ServerStateReader##serverrol vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader## serverfunctie vereist.

Machtigingen voor SQL Server 2022 en hoger

Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.

Voorbeelden

Eén. Monitoring van parallelle verzoeken

Voor verzoeken die parallel worden uitgevoerd, zie je meerdere rijen voor dezelfde combinatie van (<session_id>, <request_id>). Gebruik de volgende query om de optie Serverconfiguratie Configureren voor maximale mate van parallellisme voor alle actieve verzoeken te vinden.

Opmerking

Een request_id is uniek binnen een sessie.

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. Sessie-ID's koppelen aan Windows-threads

Je kunt de volgende query gebruiken om een sessie-ID te koppelen aan een Windows-thread-ID. Je kunt vervolgens de prestaties van de thread monitoren in de Windows Performance Monitor. De volgende query geeft geen informatie terug voor sessies die in slaap liggen.

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  

Zie ook

Dynamische beheerweergaven van SQL Server-besturingssysteem (Transact-SQL)
Thread- en Taakarchitectuurgids