Share via


sys.dm_os_threads (Transact-SQL)

傳回在 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

應執行這個執行緒的 CPU 遮罩。這會隨著 sp_configureaffinity mask 組態選項中的值而不同。

locale

int

執行緒的快取地區設定 LCID。

priority

int

這個執行緒的優先權值。

token

varbinary(8)

執行緒的快取模擬 Token 控制代碼。

is_impersonating

int

指出這個執行緒是否使用 Win32 模擬。

1 = 執行緒使用不同於處理序預設值的安全性認證。這指出執行緒模擬的實體不是建立處理序的實體。

is_waiting_on_loader_lock

int

執行緒是否在等待載入程式鎖定的作業系統狀態。

fiber_data

varbinary(8)

在執行緒上執行的目前 Win32 Fiber。這只適用於 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)

內部 Fiber 內容位址。這只適用於 SQL Server 設定為輕量型共用的情況。

self_address

varbinary(8)

內部一致性指標。

權限

需要伺服器的 VIEW SERVER STATE 權限。

範例

在啟動時,SQL Server 會啟動執行緒,然後使工作者與這些執行緒產生關聯。不過,內部元件 (例如擴充預存程序) 可以在 SQL Server 處理序之下啟動執行緒。SQL Server 並沒有這些執行緒的控制權。sys.dm_os_threads 可以提供在 SQL Server 處理序中佔用資源之惡意執行緒的相關資訊。

下列查詢可用來尋找正在執行不是由 SQL Server 啟動之執行緒的工作者,以及執行使用的時間。

[!附註]

為求精簡,下列查詢在 SELECT 陳述式中使用星號 (*)。您應該避免使用星號 (*),特別是針對目錄檢視、動態管理檢視以及系統資料表值函數。MicrosoftSQL Server 的未來升級和版本,可能會在這些檢視和函數中加入資料行並變更資料行的順序。這些變更可能會中斷應用程式所預期的特定順序和資料行數目。

SELECT *
  FROM sys.dm_os_threads
  WHERE started_by_sqlservr = 0;