sys.dm_os_threads (Transact-SQL)

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

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

Note

Чтобы вызвать это из 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 CONFIGURATIONSET в операторе PROCESS AFFINITY . Может отличаться от планировщика в случае мягкой привязки.
Priority int Приоритет данного потока.
Locale 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).
адрес_работника 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, система платформы аналитики (PDW)

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

Permissions

Для SQL Server и Управляемого экземпляра SQL требуется разрешение VIEW SERVER STATE.

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

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

Требуется VIEW разрешение на состояние производительности сервера на сервере.

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

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

Examples

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

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

Note

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

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;