sys.dm_os_threads (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform 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
как ps
top
, или 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)