sys.dm_os_tasks (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_tasks 。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

資料行名稱 資料類型 描述
task_address Varbinary(8) 物件的記憶體位址。
task_state nvarchar(60) 工作的狀態。 這個權限可以是下列其中一項:

PENDING:等候背景工作執行緒。

RUNNABLE:Runnable,但正在等候接收量子。

RUNNING:目前在排程器上執行。

SUSPENDED:具有背景工作角色,但正在等候事件。

完成:已完成。

SPINLOOP:卡在微調鎖定中。
coNtext_switches_count int 此工作已完成的排程器內容切換數目。
pending_io_count int 此工作所執行的實體 I/O 數目。
pending_io_byte_count bigint 此工作所執行的 I/O 位元組總數。
pending_io_byte_average int 此工作所執行之 I/O 的平均位元組計數。
scheduler_id int 父排程器的識別碼。 這是此工作的排程器資訊控制碼。 如需詳細資訊,請參閱 sys.dm_os_schedulers (Transact-SQL)
session_id smallint 與工作相關聯的會話識別碼。
exec_coNtext_id int 與工作相關聯的執行內容識別碼。
request_id int 工作的要求識別碼。 如需詳細資訊,請參閱 sys.dm_exec_requests (Transact-SQL)
worker_address Varbinary(8) 執行工作之背景工作的記憶體位址。

Null = 工作正在等候背景工作能夠執行,或工作剛完成執行。

如需詳細資訊,請參閱 sys.dm_os_workers (Transact-SQL)
host_address Varbinary(8) 主機的記憶體位址。

0 = 裝載不是用來建立工作。 這有助於識別用來建立這項工作的主機。

如需詳細資訊,請參閱 sys.dm_os_hosts (Transact-SQL)
parent_task_address Varbinary(8) 做為 物件父代之工作的記憶體位址。
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 權限。

範例

A. 監視平行要求

針對平行執行的要求,您會看到相同組合的多個資料列( < session_id >< request_id)。 > 使用下列查詢來尋找 所有使用中要求的 [設定最大平行處理原則伺服器組態選項 ]。

注意

會話 內request_id 是唯一的。

SELECT  
    task_address,  
    task_state,  
    context_switches_count,  
    pending_io_count,  
    pending_io_byte_count,  
    pending_io_byte_average,  
    scheduler_id,  
    session_id,  
    exec_context_id,  
    request_id,  
    worker_address,  
    host_address  
  FROM sys.dm_os_tasks  
  ORDER BY session_id, request_id;  

B. 將會話識別碼與 Windows 執行緒產生關聯

您可以使用下列查詢,將會話識別碼值與 Windows 執行緒識別碼產生關聯。 然後,您可以在 Windows 效能監視器中監視執行緒的效能。 下列查詢不會傳回睡眠中的會話資訊。

SELECT STasks.session_id, SThreads.os_thread_id  
  FROM sys.dm_os_tasks AS STasks  
  INNER JOIN sys.dm_os_threads AS SThreads  
    ON STasks.worker_address = SThreads.worker_address  
  WHERE STasks.session_id IS NOT NULL  
  ORDER BY STasks.session_id;  
GO  

另請參閱

SQL Server 作業系統相關動態管理檢視 (Transact-SQL)
執行緒和工作架構指南