sys.dm_os_workers (języka Transact-SQL)
Zwraca wiersz dla każdego pracownika w systemie.
Nazwa kolumny |
Typ danych |
Opis |
---|---|---|
worker_address |
varbinary(8) |
Adres pamięci pracownika. |
status |
int |
Tylko do użytku wewnętrznego. |
is_preemptive |
bit |
1 = Roboczy jest uruchamiany z cenią sobie wcześniejsze planowanie.Każdego pracownika, którym jest uruchomiony kod zewnętrzny jest uruchamiana cenią sobie wcześniejsze planowanie. |
is_fiber |
bit |
1 = Roboczy jest uruchamiany z lekkie buforowania.Aby uzyskać więcej informacji, zobacz sp_configure (języka Transact-SQL). |
is_sick |
bit |
1 = Pracownik jest zakleszczony, próby uzyskania pokrętła blokada.Jeśli ten bit jest zestaw, może to oznaczać problem z rywalizacja o często używanych obiektów. |
is_in_cc_exception |
bit |
1 = Pracownik jest obecnie obsługa innych niż-SQL Server wyjątku. |
is_fatal_exception |
bit |
Określa, czy ten pracownik otrzymał wyjątek krytyczny. |
is_inside_catch |
bit |
1 = Pracownik aktualnie jest obsługa wyjątku. |
is_in_polling_io_completion_routine |
bit |
1 = Pracownik aktualnie działa procedura ukończenia pracy we/wy dla oczekiwania We/Wy.Aby uzyskać więcej informacji, zobacz sys.dm_io_pending_io_requests (języka Transact-SQL). |
context_switch_count |
int |
Liczba przełączeń kontekstu harmonogramu, które są wykonywane przez tego pracownika. |
pending_io_count |
int |
Numer fizycznego we/wy, wykonywane przez tego pracownika. |
pending_io_byte_count |
bigint |
Całkowita liczba bajtów dla wszystkich oczekujących fizycznej we/wy dla tego pracownika. |
pending_io_byte_average |
int |
Średnia liczba bajtów fizycznej we/wy dla tego pracownika. |
wait_started_ms_ticks |
int |
Punkt w czas, w ms_ticks, gdy ten pracownik wprowadzone Państwo zawieszone.Odjęcie tej wartości od ms_ticks w sys.dm_os_sys_info zwraca liczbę milisekund oczekiwania na pracownika. |
wait_resumed_ms_ticks |
int |
Punkt w czas, w ms_ticks, przy stanie możliwe do uruchomienia tego pracownika.Odjęcie tej wartości od ms_ticks w sys.dm_os_sys_info zwraca liczbę milisekund, które pracownik został w kolejce możliwe do uruchomienia. |
task_bound_ms_ticks |
bigint |
Punkt w czas, w ms_ticks, gdy zadanie jest związany z tego pracownika. |
worker_created_ms_ticks |
bigint |
Punkt w czas, w ms_ticks, gdy pracownik jest tworzony. |
exception_num |
int |
Błąd numer ostatniego wyjątek, który napotkał tego pracownika. |
exception_severity |
int |
Waga ostatniego wyjątek, który napotkał tego pracownika. |
exception_address |
varbinary(8) |
Kod adresu, który wygenerował wyjątek |
locale |
int |
Ustawień regionalnych LCID dla pracownika. |
affinity |
bigint |
Koligacja wątek roboczego.Dopasowuje koligacji wątek w sys.dm_os_threads (języka Transact-SQL). |
state |
nvarchar(60) |
Stan roboczy.Może to być jedna z następujących wartości: INIT = pracownik aktualnie jest inicjowany. Z = pracownik jest aktualnie uruchomione, nonpreemptively lub preemptively. Możliwe do uruchomienia = pracownik jest gotowy do uruchomienia na harmonogram. ZAWIESZONE = pracownik jest aktualnie wstrzymana, oczekiwania na zdarzenie do jej wysłania sygnału. |
start_quantum |
bigint |
Czas w milisekundach, na początku bieżącego uruchomienia tego pracownika. |
end_quantum |
bigint |
Czas w milisekundach, na koniec bieżącego uruchomienia tego pracownika. |
last_wait_type |
nvarchar(60) |
Typ ostatniego oczekiwania.Lista typów oczekiwania, zobacz sys.dm_os_wait_stats (języka Transact-SQL). |
return_code |
int |
Zwraca wartość z ostatniego oczekiwania.Może to być jedna z następujących wartości: 0 = SUKCES 3 = ZAKLESZCZENIA 4 = PREMATURE_WAKEUP 258 = TIMEOUT |
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 |
Numer zadania, które są przetwarzane przez tego pracownika. |
fiber_address |
varbinary(8) |
Adres pamięci światłowodowe, z którą skojarzony jest ten pracownik. NULL = SQL Server nie jest skonfigurowany dla puli lekkie. |
task_address |
varbinary(8) |
Adres pamięci bieżącego zadania.Aby uzyskać więcej informacji, zobacz sys.dm_os_tasks (języka Transact-SQL). |
memory_object_address |
varbinary(8) |
Adres pamięci podrzędnego obiektu pamięci.Aby uzyskać więcej informacji, zobacz sys.dm_os_memory_objects (języka Transact-SQL). |
thread_address |
varbinary(8) |
Pamięci adres wątek skojarzonych z tym pracownika.Aby uzyskać więcej informacji, zobacz sys.dm_os_threads (języka Transact-SQL). |
signal_worker_address |
varbinary(8) |
Adres pamięci pracownika, który ostatnio zasygnalizowane tego obiektu.Aby uzyskać więcej informacji, zobacz sys.dm_os_workers (języka Transact-SQL). |
scheduler_address |
varbinary(8) |
Adres pamięci harmonogramu.Aby uzyskać więcej informacji, zobacz sys.dm_os_schedulers (języka Transact-SQL). |
processor_group |
smallint |
Przechowuje identyfikator grupy procesora, która jest przypisana do tego wątek. |
Uwagi
Jeśli stan roboczy jest uruchomiony, a pracownik działa nonpreemptively, pracownik odpowiada adres active_worker_address w sys.dm_os_schedulers.
Pracownik, który oczekuje na zdarzenie jest sygnalizowane, pracownik jest umieszczany na czele kolejki możliwe do uruchomienia.SQL ServerUmożliwia to niepożądane jednego tysiąca razy pod rząd, po upływie którego pracownik jest umieszczany na końcu kolejki.Przeniesienie pracownika na koniec kolejki ma wpływ na niektóre wydajność.
Uprawnienia
Wymaga uprawnienia Wyświetlanie stanu serwera na serwerze.
Przykłady
Aby dowiedzieć się, jak długo pracownik działaniu zawieszone lub możliwe do uruchomienia stan, można użyć następującej kwerendy.
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 danych wyjściowych gdy w_runnable i w_suspended są równe, to reprezentuje czas pracownik jest w stanie zawieszone.W przeciwnym razie w_runnable reprezentuje czas , który jest poświęcony przez pracownika w stanie możliwe do uruchomienia.W wyniku sesja 52 jest SUSPENDED dla 35,094 milisekund.