Sdílet prostřednictvím


sys.dm_os_tasks (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Vrátí jeden řádek pro každou aktivní úlohu v instanci SQL Serveru. Úloha je základní jednotkou vykonávání v SQL Serveru. Příklady úkolů zahrnují dotaz, přihlášení, odhlášení a systémové úkoly jako je aktivita čištění duchů, aktivita kontrolních bodů, zápis logu, paralelní opakování. Pro více informací o úkolech viz Průvodce vláknem a architekturou úloh.

Poznámka:

Pro volání z Azure Synapse Analytics nebo Analytics Platform System (PDW) použijte název sys.dm_pdw_nodes_os_tasks. Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Název sloupce Datový typ Description
task_address varbinary(8) Paměťová adresa objektu.
task_state nvarchar(60) Stav úkolu. Může to být jedna z následujících možností:

ČEKÁ NA ČTENÍ: Čekám na vlákno pro pracovníky.

RUNNABLE: Runnable, ale čeká na přijetí kvantového data.

BĚŽÍ: Momentálně běží na plánovači.

SUSPENDOVÁNO: Má pracovníka, ale čeká na událost.

HOTOVO: Hotovo.

SPINLOOP: Uvízl jsem v spinlocku.
context_switches_count int Počet kontextových přepnutí plánovače, které tato úloha dokončila.
pending_io_count int Počet fyzických I/O procesů, které tato úloha vykonává.
pending_io_byte_count bigint Celkový počet bajtů I/O prováděných touto úlohou.
pending_io_byte_average int Průměrný počet bajtů I/O operací prováděných touto úlohou.
scheduler_id int ID rodičovského plánovače. Toto je přezdívka k informacím plánovače pro tento úkol. Pro více informací viz sys.dm_os_schedulers (Transact-SQL).
session_id smallint ID relace, která je přiřazena k úkolu.
exec_context_id int ID kontextu vykonání přiřazené k úkolu.
request_id int ID požadavku na úkol. Další informace najdete v tématu sys.dm_exec_requests (Transact-SQL).
worker_address varbinary(8) Paměťová adresa pracovníka, který úkol spouští.

NULL = Úkol buď čeká, až bude pracovník schopen spuštění, nebo právě dokončil spuštění.

Pro více informací viz sys.dm_os_workers (Transact-SQL).
host_address varbinary(8) Paměťová adresa hostitele.

0 = K vytvoření úkolu nebyl použit hosting. To pomáhá identifikovat hostitele, který byl použit k vytvoření tohoto úkolu.

Pro více informací viz sys.dm_os_hosts (Transact-SQL).
parent_task_address varbinary(8) Paměťová adresa úkolu, který je rodičem objektu.
pdw_node_id int platí pro: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifikátor uzlu, na který je tato distribuce zapnutá.

Povolení

Na SQL Serveru a službě SQL Managed Instance vyžaduje VIEW SERVER STATE oprávnění.

U cílů služby SQL Database Basic, S0 a S1 a pro databáze v elastických fondech se vyžaduje účet správce serveru , účet správce Microsoft Entra nebo členství v ##MS_ServerStateReader##roli serveru . U všech ostatních cílů VIEW DATABASE STATE služby SQL Database se vyžaduje buď oprávnění k databázi, nebo členství v ##MS_ServerStateReader## roli serveru.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU SERVERU na serveru.

Examples

A. Monitorování paralelních požadavků

U požadavků vykonávaných paralelně uvidíte více řádků pro stejnou kombinaci (<session_id>, <request_id>). Použijte následující dotaz k nalezení možnosti konfigurace serveru Konfigurovat maximální stupeň paralelizmu pro všechny aktivní požadavky.

Poznámka:

request_id je v rámci sezení jedinečný.

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. Přiřazení ID relací s vlákny Windows

Následující dotaz můžete použít k přiřazení hodnoty ID relace k ID vlákna Windows. Výkon vlákna pak můžete sledovat ve Windows Performance Monitoru. Následující dotaz nevrací informace o relacích, které jsou ve spánku.

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  

Viz také

Zobrazení dynamické správy související s operačním systémem SQL Server (Transact-SQL)
Průvodce architekturou vláken a úloh