sys.dm_os_tasks (Transact-SQL)

Gibt eine Zeile für jeden aktiven Task in der SQL Server-Instanz zurück.

Spaltenname

Datentyp

Beschreibung

task_address

varbinary(8)

Speicheradresse des Objekts.

task_state

nvarchar(60)

Der Status des Tasks. Die folgenden Werte sind möglich:

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 physikalischen 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 das übergeordnete Element des Objekts ist.

Berechtigung

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

Beispiele

A. Überwachen paralleler Anforderungen

Für parallel ausgeführte Anforderungen werden mehrere Zeilen für die gleiche Kombination von (<session_id>, <request_id>) angezeigt. Verwenden Sie die folgende Abfrage, um den Grad an Parallelität für alle aktiven Anforderungen zu finden.

HinweisHinweis

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 zu Windows-Threads

Mithilfe der folgenden Abfrage können Sie einer Windows-Thread-ID einen Sitzungs-ID-Wert zuordnen. Sie können dann die Leistung des Threads 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