分享方式:


sys.dm_os_tasks (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_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)
執行緒和工作架構指南