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/) pid
等 ps
top
工具的結果。 這是因為平臺抽象層 (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)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應