Freigeben über


sys.dm_os_tasks (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Gibt eine Zeile für jede Aufgabe zurück, die in der Instanz von SQL Server aktiv ist. Eine Aufgabe ist die grundlegende Ausführungseinheit in SQL Server. Beispiele für Aufgaben sind eine Abfrage, eine Anmeldung, ein Abmelden und Systemaufgaben wie Ghost Cleanup-Aktivität, Prüfpunktaktivität, Protokollschreiber, parallele Wiederholungsaktivität. Weitere Informationen zu Aufgaben finden Sie im Thread- und Aufgabenarchitekturhandbuch.

Hinweis

Um dies von Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_os_tasks. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Spaltenname Datentyp Beschreibung
task_address varbinary(8) Speicheradresse des Objekts.
task_state nvarchar(60) Der Status des Tasks. Folgende Möglichkeiten stehen zur Auswahl:

PENDING: Warten auf einen Arbeitsthread.

RUNNABLE: Ausführbar, doch wird auf das Eintreffen eines Quantums gewartet.

RUNNING: Wird derzeit auf dem Zeitplanungsmodul ausgeführt.

SUSPENDED: Verfügt über einen Arbeitsthread, wartet jedoch auf ein Ereignis.

DONE: Abgeschlossen.

SPINLOOP: In einem Spinlock festgehalten.
context_switches_count int Anzahl der Kontextwechsel im Zeitplanungsmodul, die dieser Task abgeschlossen hat.
pending_io_count int Anzahl der physischen E/A-Vorgänge, die dieser Task ausgeführt hat.
pending_io_byte_count bigint Gesamtbytezahl der von diesem Task ausgeführten E/A-Vorgänge.
pending_io_byte_average int Durchschnittliche Bytezahl der von diesem Task ausgeführten E/A-Vorgänge.
scheduler_id int ID des übergeordneten Zeitplanungsmoduls. Dies ist ein Handle für die Zeitplanungsmodul-Informationen zu diesem Task. Weitere Informationen finden Sie unter sys.dm_os_schedulers (Transact-SQL).
session_id smallint ID der Sitzung, die dem Task zugeordnet ist.
exec_context_id int Die dem Task zugeordnete Ausführungskontext-ID.
request_id int Die ID der Anforderung des Tasks. Weitere Informationen finden Sie unter sys.dm_exec_requests (Transact-SQL).
worker_address varbinary(8) Speicheradresse des Arbeitsthreads, der den Task ausführt.

NULL = Task wartet entweder darauf, dass ein Arbeitsthread ausgeführt werden kann, oder die Ausführung des Threads wurde soeben beendet.

Weitere Informationen finden Sie unter sys.dm_os_workers (Transact-SQL).
host_address varbinary(8) Speicheradresse des Hosts.

0 = Hosting wurde zum Erstellen des Tasks nicht verwendet. Dadurch kann der Host identifiziert werden, der zum Erstellen dieses Tasks verwendet wurde.

Weitere Informationen finden Sie unter sys.dm_os_hosts (Transact-SQL).
parent_task_address varbinary(8) Speicheradresse des Tasks, der dem Objekt übergeordnet ist.
pdw_node_id int Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW)

Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet.

Berechtigungen

Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE-Berechtigung erforderlich.

Für die SQL-Datenbank-Ziele Basic, S0 und S1 sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators oder des Microsoft Entra-Administratorkontos oder die Mitgliedschaft in der ##MS_ServerStateReader## Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##-Serverrolle erforderlich.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

Beispiele

A. Überwachung paralleler Anforderungen

Für Anforderungen, die parallel ausgeführt werden, werden mehrere Zeilen für dieselbe Kombination von (<session_id>,< request_id>) angezeigt. Verwenden Sie die folgende Abfrage, um den maximalen Grad der Parallelitätsserverkonfigurationsoption für alle aktiven Anforderungen zu finden.

Hinweis

Eine request_id ist innerhalb einer Sitzung eindeutig.

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. Zuordnen von Sitzungs-IDs und Windows-Threads

Mithilfe der folgenden Abfrage lässt sich eine Sitzungs-ID einer Windows-Thread-ID zuordnen. Sie können die Leistung des Threads dann im Windows-Systemmonitor überwachen. Mit der folgenden Abfrage werden keine Informationen für ruhende Sitzungen (sleeping) zurückgegeben.

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  

Siehe auch

Dynamische Verwaltungssichten in Verbindung mit dem SQL Server-Betriebssystem (Transact-SQL)
Handbuch zur Thread- und Taskarchitektur