Udostępnij za pomocą


sys.dm_os_threads (Transact-SQL)

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

Zwraca listę wszystkich wątków systemu operacyjnego SQL Server działających w procesie SQL Server.

Uwaga / Notatka

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

Nazwa kolumny Typ danych Description
thread_address varbinary(8) Adres pamięci (klucz główny) wątku.
started_by_sqlservr bit Wskazuje inicjator wątku.

1 = SQL Server rozpoczął wątek.

0 = Inny komponent rozpoczynał wątek, na przykład rozszerzona procedura przechowywana z SQL Server.
os_thread_id int ID wątku przypisanego przez system operacyjny.
stan int Flaga statusu wewnętrznego.
instruction_address varbinary(8) Adres instrukcji, która jest obecnie wykonywana.
creation_time datetime Czas, gdy powstał ten wątek.
kernel_time bigint Ilość czasu jądra poświęcona temu wątkowi.
usermode_time bigint Ilość czasu użytkownika poświęconego temu wątkowi.
stack_base_address varbinary(8) Adres pamięci najwyższego adresu stosu dla tego wątku.
stack_end_address varbinary(8) Adres pamięci najniższego adresu stosu tego wątku.
stack_bytes_committed int Liczba bajtów zatwierdzonych w stosie.
stack_bytes_used int Liczba bajtów aktywnie używanych w wątku.
koligacja bigint Maska CPU, na której działa ten wątek. Zależy to od wartości skonfigurowanej przez powiązanie ALTER SERVER CONFIGURATION SET PROCESS AFFINITY . Może się różnić od schedulera w przypadku miękkiej afinitetu.
Priority int Wartość priorytetu tego wątku.
Lokalizacja int Cacheed locale LCID dla wątku.
Żeton varbinary(8) Uchwyt tokena podszywania się pod wątek w pamięci pamięciowej.
is_impersonating int Wskazuje, czy ten wątek używa podszywania się pod Win32.

1 = Wątek używa poświadczeń bezpieczeństwa różniących się od domyślnych danych procesu. Oznacza to, że wątek podszywa się pod podmiot inny niż ten, który stworzył proces.
is_waiting_on_loader_lock int Status systemu operacyjnego, czy wątek czeka na blokadę loadera.
fiber_data varbinary(8) Aktualne światłowód Win32, który działa na wątku. Dotyczy to tylko sytuacji, gdy SQL Server jest skonfigurowany do lekkiej puli.
thread_handle varbinary(8) Tylko do użytku wewnętrznego.
event_handle varbinary(8) Tylko do użytku wewnętrznego.
scheduler_address varbinary(8) Adres pamięci harmonogramu powiązanego z tym wątkiem. Więcej informacji można znaleźć w sys.dm_os_schedulers (Transact-SQL).
adres_pracownika varbinary(8) Adres pamięci pracownika powiązanego z tym wątkiem. Więcej informacji można znaleźć w sys.dm_os_workers (Transact-SQL).
fiber_context_address varbinary(8) Wewnętrzny adres kontekstu światłowodu. Dotyczy to tylko sytuacji, gdy SQL Server jest skonfigurowany do lekkiej puli.
self_address varbinary(8) Wskaźnik spójności wewnętrznej.
processor_group smallint Dotyczy do: SQL Server 2008 R2 (10.50.x) i nowszych.

Identyfikator grupy procesora.
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.

Uwagi dotyczące wersji na Linuksa

Ze względu na sposób działania silnika SQL na Linuksie, niektóre z tych informacji nie pokrywają się z danymi diagnostycznymi Linuksa. Na przykład nie os_thread_id odpowiada efektowi narzędzi takich jak ps,top czy procfs (/proc/pid). Jest to zasługa Platform Abstraction Layer (SQLPAL), warstwy pomiędzy komponentami SQL Server a systemem operacyjnym.

Przykłady

Po uruchomieniu SQL Server uruchamia wątki i następnie kojarzy pracowników z tymi wątkami. Jednak zewnętrzne komponenty, takie jak rozszerzona procedura przechowywana, mogą uruchamiać wątki w procesie SQL Server. SQL Server nie ma kontroli nad tymi wątkami. sys.dm_os_threads może dostarczać informacji o wątkach nieuczciwych, które zużywają zasoby w procesie SQL Server.

Następujące zapytanie służy do znalezienia pracowników wraz z czasem poświęconym na wykonanie, które uruchamiają wątki nieuruchomione przez SQL Server.

Uwaga / Notatka

Dla zwięzłości następujące zapytanie używa gwiazdki (*) w zdaniu SELECT . Powinieneś unikać używania gwiazdki (*), zwłaszcza w widokach katalogowych, dynamicznych widokach zarządzania oraz funkcjach tabelowych systemowych. Przyszłe aktualizacje i wydania Microsoft SQL Server mogą dodawać kolumny i zmieniać kolejność kolumn w tych widokach i funkcjach. Te zmiany mogą zepsuć aplikacje, które oczekują określonego porządku i liczby kolumn.

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

Zobacz także

sys.dm_os_workers (Transact-SQL)
Dynamiczne widoki zarządzania związane z systemem operacyjnym PROGRAMU SQL Server (Transact-SQL)