Udostępnij za pomocą


sys.dm_os_tasks (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Zwraca jeden wiersz dla każdego zadania aktywnego w instancji SQL Server. Zadanie jest podstawową jednostką wykonania w SQL Serverze. Przykłady zadań to zapytanie, logowanie, wylogowanie oraz zadania systemowe, takie jak aktywność sprzątania duchów, aktywność punktów kontrolnych, zapisywanie logów, równoległa aktywność powtórek. Więcej informacji o zadaniach znajdziesz w przewodniku po architekturze wątków i zadań.

Uwaga / Notatka

Aby wywołać to z Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_os_tasks. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.

Nazwa kolumny Typ danych Description
task_address varbinary(8) Adres pamięci obiektu.
task_state nvarchar(60) Stan zadania. Może to być jeden z następujących elementów:

W OCZEKIWANIU: Czekam na wątek pracowniczy.

RUNNABLE: Runnable, ale czeka na otrzymanie kwantu.

DZIAŁANIE: Obecnie działam na harmonogramie.

ZAWIESZONY: Ma pracownika, ale czeka na wydarzenie.

KONIEC: Ukończone.

SPINLOOP: Utknął w spinlocku.
context_switches_count int Liczba przełączników kontekstu harmonogramu, które to zadanie wykonało.
pending_io_count int Liczba fizycznych operacji I/O wykonywanych przez to zadanie.
pending_io_byte_count bigint Całkowita liczba bajtów I/O wykonywanych przez to zadanie.
pending_io_byte_average int Średnia liczba bajtów I/O wykonywanych przez to zadanie.
scheduler_id int Identyfikator nadrzędnego planera. To jest uchwyt do informacji planisty dla tego zadania. Więcej informacji można znaleźć w sys.dm_os_schedulers (Transact-SQL).
session_id smallint ID sesji powiązanej z zadaniem.
exec_context_id int Identyfikator kontekstu wykonania powiązany z zadaniem.
request_id int Identyfikacja żądania zadania. Aby uzyskać więcej informacji, zobacz sys.dm_exec_requests (Transact-SQL).
worker_address varbinary(8) Adres pamięci pracownika, który wykonuje zadanie.

NULL = Zadanie albo czeka, aż pracownik będzie mógł się uruchomić, albo właśnie zakończyło działanie.

Więcej informacji można znaleźć w sys.dm_os_workers (Transact-SQL).
host_address varbinary(8) Adres pamięci hosta.

0 = Hosting nie został użyty do utworzenia zadania. Pomaga to zidentyfikować hosta, który został użyty do utworzenia tego zadania.

Więcej informacji można znaleźć w sys.dm_os_hosts (Transact-SQL).
parent_task_address varbinary(8) Adres pamięci zadania, które jest rodzicem obiektu.
pdw_node_id int Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW)

Identyfikator węzła, w ramach którego znajduje się ta dystrybucja.

Permissions

W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.

W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.

Przykłady

A. Monitorowanie żądań równoległych

Dla żądań wykonywanych równolegle zobaczysz wiele wierszy dla tej samej kombinacji (<session_id>, <request_id>). Użyj poniższego zapytania, aby znaleźć opcję konfiguracji serwera Konfiguruj maksymalny stopień równoległości dla wszystkich aktywnych żądań.

Uwaga / Notatka

request_id jest wyjątkowy w ramach sesji.

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. Łączenie identyfikatorów sesji z wątkami Windows

Możesz użyć następującego zapytania, aby powiązać wartość ID sesji z identyfikatorem wątku Windows. Następnie możesz monitorować wydajność wątku w Windows Performance Monitor. Poniższe zapytanie nie zwraca informacji o sesjach uśpionych.

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  

Zobacz także

Dynamiczne widoki zarządzania związane z systemem operacyjnym PROGRAMU SQL Server (Transact-SQL)
Przewodnik po architekturze wątków i zadań