sys.dm_os_threads (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics 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 資料庫基本、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 星號 ( * )。 您應該避免使用星號 ,特別是針對目錄檢視、動態管理檢視和系統資料表值函式。 Microsoft SQL Server 的未來升級和版本可能會新增資料行,並將資料行的順序變更為這些檢視和函式。 這些變更可能會中斷預期特定順序和資料行數目的應用程式。

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

另請參閱

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