sys.dm_os_threads

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

Имя столбца

Тип данных

Описание

thread_address

varbinary(8)

Адрес потока в памяти (первичный ключ).

started_by_sqlservr

bit

Указывает, кто создал поток:

1 = поток запущен SQL Server;

0 = поток создан другим компонентом, например расширенной хранимой процедурой внутри SQL Server.

os_thread_id

int

Идентификатор потока, назначенный операционной системой.

status

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

Маска ЦП, где должен выполняться данный поток. Она зависит от значения параметра конфигурации affinity mask процедуры sp_configure.

locale

int

Кэшированное значение идентификатора языкового стандарта (LCID) для данного потока.

priority

int

Приоритет данного потока.

token

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.

fiber_context_address

varbinary(8)

Адрес контекста внутреннего волокна. Применимо только в случае, если SQL Server настроен для использования упрощенных пулов.

self_address

varbinary(8)

Указатель для обеспечения внутренней согласованности.

Разрешения

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

Примеры

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

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

ПримечаниеПримечание

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

SELECT *
  FROM sys.dm_os_threads
  WHERE started_by_sqlservr = 0;