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 遮罩。 這會隨著 ALTER SERVER CONFIGURATION SET PROCESS AFFINITY 陳述式所設定的值而不同。 若是軟相似性,可能與排程器不同。 |
Priority |
int |
這個執行緒的優先權值。 |
Locale |
int |
執行緒的快取地區設定 LCID。 |
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) |
內部一致性指標。 |
processor_group |
smallint |
儲存處理器群組識別碼。 |
權限
需要伺服器的 VIEW SERVER STATE 權限。
範例
在啟動時,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;