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