Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
Zwraca wiersz dla każdego pracownika w systemie. Więcej informacji o pracownikach 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_workers. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
| adres_pracownika | varbinary(8) | Adres pamięci pracownika. |
| stan | int | Tylko do użytku wewnętrznego. |
| is_preemptive | bit | 1 = Pracownik działa z preemptywnym harmonogramem. Każdy pracownik uruchamiający zewnętrzny kod jest uruchamiany w ramach planowania preemptivnego. |
| is_fiber | bit | 1 = Pracownik działa z lekkim poolingiem. Więcej informacji można znaleźć w sp_configure (Transact-SQL). |
| is_sick | bit | 1 = Pracownik utknął próbując uzyskać blokadę spin. Jeśli ten bit jest ustawiony, może to wskazywać na problem z konkurencją na często odwiedzanym obiekcie. |
| is_in_cc_exception | bit | 1 = Pracownik obecnie obsługuje wyjątek spoza SQL Server. |
| is_fatal_exception | bit | Określa, czy ten pracownik otrzymał wyjątek śmiertelny. |
| is_inside_catch | bit | 1 = Pracownik obecnie obsługuje wyjątek. |
| is_in_polling_io_completion_routine | bit | 1 = Pracownik obecnie uruchamia procedurę zakończenia I/O dla oczekującego I/O. Więcej informacji można znaleźć w sys.dm_io_pending_io_requests (Transact-SQL). |
| context_switch_count | int | Liczba przełączników kontekstu planistów wykonywanych przez tego pracownika. |
| pending_io_count | int | Liczba fizycznych operacji I/O wykonywanych przez tego pracownika. |
| pending_io_byte_count | bigint | Łączna liczba bajtów dla wszystkich oczekujących fizycznych I/O dla tego pracownika. |
| pending_io_byte_average | int | Średnia liczba bajtów dla fizycznych I/O dla tego pracownika. |
| wait_started_ms_ticks | bigint | W momencie ms_ticks, kiedy ten pracownik wszedł w stan ZAWIESZONY. Odjęcie tej wartości od ms_ticks w sys.dm_os_sys_info zwraca liczbę milisekund, przez które pracownik czekał. |
| wait_resumed_ms_ticks | bigint | Moment w ms_ticks, kiedy ten pracownik wszedł w stan BIEGALNY. Odejmowanie tej wartości od ms_ticks w sys.dm_os_sys_info zwraca liczbę milisekund, przez które pracownik przebywał w kolejce do uruchomienia. |
| task_bound_ms_ticks | bigint | Moment w czasie, w ms_ticks, kiedy zadanie jest przypisane temu pracownikowi. |
| worker_created_ms_ticks | bigint | Punkt w czasie, w ms_ticks, kiedy powstaje pracownik. |
| exception_num | int | Numer błędu ostatniego wyjątku, na który napotkał ten pracownik. |
| exception_severity | int | Poważność ostatniego wyjątku, z którym napotkał ten pracownik. |
| exception_address | varbinary(8) | Adres kodowy, który wyrzucił wyjątek |
| koligacja | bigint | Powinowactwo nici pracownika. Odpowiada powinowactwu nici w sys.dm_os_threads (Transact-SQL). |
| stan | nvarchar(60) | Stan pracowniczy. Może być jedną z następujących wartości: INIT = Pracownik jest obecnie inicjalizowany. RUNNING = Pracownik obecnie działa albo nieprewencyjnie, albo preemptywnie. RUNNABLE = Pracownik jest gotowy do uruchomienia na planiście. SUSPENDED = Pracownik jest obecnie zawieszony, czeka na zdarzenie, które wyśle mu sygnał. |
| start_quantum | bigint | Czas, w milisekundach, na początku bieżącego cyklu tego pracownika. |
| end_quantum | bigint | Czas, w milisekundach, na końcu bieżącej serii tego pracownika. |
| last_wait_type | nvarchar(60) | Taki rodzaj ostatniego oczekiwania. Listę typów oczekiwania można znaleźć w sys.dm_os_wait_stats (Transact-SQL). |
| return_code | int | Wartość zwrotna z ostatniego oczekiwania. Może być jedną z następujących wartości: 0 =SUKCES 3 = IMPAS 4 = PREMATURE_WAKEUP 258 = PRZERWA |
| quantum_used | bigint | Tylko do użytku wewnętrznego. |
| max_quantum | bigint | Tylko do użytku wewnętrznego. |
| boost_count | int | Tylko do użytku wewnętrznego. |
| tasks_processed_count | int | Liczba zadań, które ten pracownik wykonał. |
| fiber_address | varbinary(8) | Adres pamięci światłowodu, z którym ten pracownik jest powiązany. NULL = SQL Server nie jest skonfigurowany do lekkiej puli. |
| adres zadania | varbinary(8) | Adres pamięci bieżącego zadania. Więcej informacji można znaleźć w sys.dm_os_tasks (Transact-SQL). |
| memory_object_address | varbinary(8) | Adres pamięci obiektu pamięci roboczej. Więcej informacji można znaleźć w sys.dm_os_memory_objects (Transact-SQL). |
| thread_address | varbinary(8) | Adres pamięci wątku powiązanego z tym workerem. Więcej informacji można znaleźć w sys.dm_os_threads (Transact-SQL). |
| signal_worker_address | varbinary(8) | Adres pamięci pracownika, który ostatnio sygnalizował ten obiekt. Więcej informacji można znaleźć w sys.dm_os_workers. |
| scheduler_address | varbinary(8) | Adres pamięci planisty. Więcej informacji można znaleźć w sys.dm_os_schedulers (Transact-SQL). |
| processor_group | smallint | Przechowuje identyfikator grupy procesorów przypisany do tego wątku. |
| 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. |
Uwagi
Jeśli stan pracownika DZIAŁA, a pracownik działa niepreemptywnie, adres pracownika odpowiada active_worker_address w sys.dm_os_schedulers.
Gdy pracownik oczekujący na zdarzenie zostaje zasygnalizowany, trafia na początek kolejki do uruchomienia. SQL Server pozwala na to, aby to powtórzyło się tysiąc razy z rzędu, po czym pracownik trafia na koniec kolejki. Przesunięcie pracownika na koniec kolejki ma pewne konsekwencje dla wydajności.
Permissions
W programie SQL Server wymagane jest VIEW SERVER STATE uprawnienia.
Na poziomach SQL Database Premium wymaga VIEW DATABASE STATE to uprawnień do bazy danych. Na standardowych poziomach Server Admin SQL Database i Basic wymaga członkostwa w roli lub konta Azure Active Directory admin .
Uprawnienia dla programu SQL Server 2022 i nowszych
Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.
Przykłady
Możesz użyć poniższego zapytania, aby dowiedzieć się, jak długo pracownik działa w stanie ZAWIESZONYM lub MOŻLIWYM do URUCHOMIENIA.
SELECT
t1.session_id,
CONVERT(varchar(10), t1.status) AS status,
CONVERT(varchar(15), t1.command) AS command,
CONVERT(varchar(10), t2.state) AS worker_state,
w_suspended =
CASE t2.wait_started_ms_ticks
WHEN 0 THEN 0
ELSE
t3.ms_ticks - t2.wait_started_ms_ticks
END,
w_runnable =
CASE t2.wait_resumed_ms_ticks
WHEN 0 THEN 0
ELSE
t3.ms_ticks - t2.wait_resumed_ms_ticks
END
FROM sys.dm_exec_requests AS t1
INNER JOIN sys.dm_os_workers AS t2
ON t2.task_address = t1.task_address
CROSS JOIN sys.dm_os_sys_info AS t3
WHERE t1.scheduler_id IS NOT NULL;
Oto zestaw wyników.
session_id status command worker_state w_suspended w_runnable
---------- ---------- --------------- ------------ ----------- --------------------
4 background LAZY WRITER SUSPENDED 688 688
6 background LOCK MONITOR SUSPENDED 4657 4657
19 background BRKR TASK SUSPENDED 603820344 603820344
14 background BRKR EVENT HNDL SUSPENDED 63583641 63583641
51 running SELECT RUNNING 0 0
2 background RESOURCE MONITO RUNNING 0 603825954
3 background LAZY WRITER SUSPENDED 422 422
7 background SIGNAL HANDLER SUSPENDED 603820485 603820485
13 background TASK MANAGER SUSPENDED 603824704 603824704
18 background BRKR TASK SUSPENDED 603820407 603820407
9 background TRACE QUEUE TAS SUSPENDED 454 454
52 suspended SELECT SUSPENDED 35094 35094
1 background RESOURCE MONITO RUNNING 0 603825954
W produkcji, gdy w_runnable i są równe w_suspended , oznacza to czas, w którym pracownik znajduje się w stanie ZAWIESZONYM. W przeciwnym razie oznacza w_runnable czas spędzony przez pracownika w stanie RUNNABLE. W wyniku sesja 52 trwa SUSPENDED35,094 milisekundy.
Zobacz też
Dynamiczne widoki zarządzania związane z systemem operacyjnym PROGRAMU SQL Server (Transact-SQL)
Przewodnik po architekturze przetwarzania zapytań
Przewodnik po architekturze wątków i zadań