共用方式為


sys.dm_os_threads (Transact-SQL)

適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

傳回在 SQL Server 進程下執行的所有 SQL Server 作業系統線程清單。

注意

若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此專案,請使用名稱 sys.dm_pdw_nodes_os_threads。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

資料行名稱 資料類型 描述
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 在線程上主動使用的位元元組數目。
相似性 bigint 此線程執行所在的 CPU 遮罩。 這取決於 ALTER SERVER CONFIGURATION SET PROCESS AFFINITY 語句所設定的值。 在軟親和性的情況下,可能與排程器不同。
優先順序 int 此線程的優先順序值。
地區設定 int 線程的快取地區設定 LCID。
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 (Transact-SQL)
fiber_context_address varbinary(8) 內部光纖內容位址。 這隻適用於 SQL Server 設定為輕量型共享時。
self_address varbinary(8) 內部一致性指標。
processor_group smallint 適用於:SQL Server 2008 R2 (10.50.x) 和更新版本。

處理器群組標識碼。
pdw_node_id int 適用於:Azure Synapse Analytics、Analytics Platform System (PDW)

此散發節點的標識碼。

權限

在 SQL Server 和 SQL 受控執行個體上,需要 VIEW SERVER STATE 權限。

在 SQL Database [Basic][S0][S1] 服務目標,以及彈性集區中的資料庫,需要伺服器管理員帳戶、伺服器管理員帳戶、Microsoft Entra 管理員帳戶或 ##MS_ServerStateReader##伺服器角色的成員資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE 權限或 ##MS_ServerStateReader## 伺服器角色的成員資格。

SQL Server 2022 及更新版本的權限

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

Linux 版本上的注意事項

由於 SQL 引擎在 Linux 中的運作方式,部分資訊與 Linux 診斷數據不符。 例如,os_thread_id不符合 、或 procfs (/proc/)pidpstop工具的結果。 這是因為平臺抽象層 (SQLPAL)是 SQL Server 元件與操作系統之間的層。

範例

啟動時,SQL Server 會啟動線程,然後將背景工作角色與這些線程產生關聯。 不過,外部元件,例如擴充預存程式,可以在 SQL Server 進程下啟動線程。 SQL Server 無法控制這些線程。 sys.dm_os_threads可以提供在 SQL Server 進程中取用資源的流氓線程相關信息。

下列查詢可用來尋找背景工作角色,以及用來執行 SQL Server 未啟動之線程的時間。

注意

為了簡潔起義,下列查詢會在 語句中使用SELECT星號 (*)。 您應該避免使用星號 ,特別是針對目錄檢視、動態管理檢視和系統數據表值函式。 SQL Server 未來的升級和發行Microsoft可能會新增數據行,並將數據行的順序變更為這些檢視和函式。 這些變更可能會中斷預期特定順序和數據行數目的應用程式。

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

另請參閱

sys.dm_os_workers (Transact-SQL)
SQL Server 操作系統相關動態管理檢視 (Transact-SQL)