sys.dm_os_threads (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

Возвращает список всех потоков операционной системы SQL Server, выполняемых в процессе SQL Server.

Примечание.

Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_os_threads. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Имя столбца Тип данных Description
thread_address varbinary(8) Адрес потока в памяти (первичный ключ).
started_by_sqlservr bit Указывает, кто создал поток:

1 = SQL Server запустил поток.

0 = другой компонент запустил поток, например расширенную хранимую процедуру из SQL Server.
os_thread_id int Идентификатор потока, назначенный операционной системой.
статус int Флаг внутреннего состояния.
instruction_address varbinary(8) Адрес выполняющейся в данный момент инструкции.
creation_time datetime Время создания потока.
kernel_time bigint Время работы потока в режиме ядра.
usermode_time bigint Время работы потока в режиме пользователя.
stack_base_address varbinary(8) Самый высокий адрес в стеке для данного потока.
stack_end_address varbinary(8) Самый низкий адрес в стеке для данного потока.
stack_bytes_committed int Число байтов, сохраненных в стеке.
stack_bytes_used int Число байтов, используемых потоком в данный момент.
affinity bigint Маска ЦП, на которой выполняется данный поток. Это зависит от значения, настроенного инструкцией ALTER SERVER CONFIGURATION SET PROCESS AFFINITY . Может отличаться от планировщика в случае мягкой привязки.
Приоритет int Приоритет данного потока.
Локаль int Кэшированное значение идентификатора локали (LCID) для данного потока.
Маркер varbinary(8) Кэшированный дескриптор токена олицетворения для данного потока.
is_impersonating int Указывает, использует ли данный поток олицетворение Win32:

1 = поток использует учетные данные для обеспечения безопасности, отличающиеся от данных для процесса по умолчанию. Это значит, что поток олицетворяет сущность, отличную от созданной процессом.
is_waiting_on_loader_lock int Состояние операционной системы, указывающее, ожидает ли поток завершения блокировки загрузчика.
fiber_data varbinary(8) Текущее волокно Win32, запущенное для потока. Это применимо только при настройке SQL Server для упрощенного пула.
thread_handle varbinary(8) Только для внутреннего применения.
event_handle varbinary(8) Только для внутреннего применения.
scheduler_address varbinary(8) Адрес в памяти связанного с данным потоком планировщика. Дополнительные сведения см. в разделе sys.dm_os_schedulers (Transact-SQL).
worker_address varbinary(8) Адрес в памяти связанного с данным потоком исполнителя. Дополнительные сведения см. в разделе sys.dm_os_workers (Transact-SQL).
fiber_context_address varbinary(8) Адрес контекста внутреннего волокна. Это применимо только при настройке SQL Server для упрощенного пула.
self_address varbinary(8) Указатель для обеспечения внутренней согласованности.
processor_group smallint Область применения: SQL Server 2008 R2 (10.50.x) и более поздних версий.

Идентификатор Processor_group.
pdw_node_id int Область применения: Azure Synapse Analytics, Analytics Platform System (PDW)

Идентификатор узла, на который находится данное распределение.

Разрешения

На SQL Server и управляемом экземпляре SQL необходимо разрешение VIEW SERVER STATE.

Для целей службы База данных SQL Basic, S0 и S1, а также для баз данных в эластичных пулах, учетной записи администратора сервера, учетной записи администратора Microsoft Entra или членства в ##MS_ServerStateReader##роли сервера требуется. Для всех остальных целей обслуживания базы данных SQL требуется разрешение VIEW DATABASE STATE в базе данных или членство в роли сервера ##MS_ServerStateReader##.

Разрешения для SQL Server 2022 и более поздних версий

Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.

Заметки о версии Linux

Из-за работы обработчика SQL в Linux некоторые из этих сведений не соответствуют данным диагностика Linux. Например, не соответствует результату таких инструментов, os_thread_id как pstop , или procfs (/proc/pid). Это связано с уровнем абстракции платформы (SQLPAL), уровнем между компонентами SQL Server и операционной системой.

Примеры

После запуска SQL Server запускает потоки, а затем связывает рабочие роли с этими потоками. Однако внешние компоненты, такие как расширенная хранимая процедура, могут запускать потоки в процессе SQL Server. SQL Server не контролирует эти потоки. sys.dm_os_threads могут предоставлять сведения о потоках изгоев, которые используют ресурсы в процессе SQL Server.

Следующий запрос используется для поиска рабочих ролей, а также времени, используемого для выполнения, которые выполняются потоки, не запущенные SQL Server.

Примечание.

Для краткости в следующем запросе в инструкции * используется звездочка (SELECT). Следует избегать использования звездочки (*) при выполнении запросов к представлениям каталога, динамическим административным представлениям и системным функциям с табличным значением. Будущие обновления и выпуски Microsoft SQL Server могут добавлять столбцы и изменять порядок столбцов в эти представления и функции. Эти изменения могут повредить приложения, которые запрограммированы на определенный порядок и число столбцов.

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

См. также

sys.dm_os_workers (Transact-SQL)
Динамические административные представления операционной системы SQL Server (Transact-SQL)