sys.dm_os_tasks (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 資料庫

針對 SQL Server 實例中作用中的每個工作,各傳回一個數據列。 工作是 SQL Server 中執行的基本單位。 工作的範例包括查詢、登入、註銷和系統工作,例如準刪除清除活動、檢查點活動、記錄寫入器、平行重做活動。 如需工作的詳細資訊,請參閱 線程和工作架構指南

Note

要從Azure Synapse Analytics稱呼,請使用sys.dm_pdw_nodes_os_tasks。 Azure Synapse Analytics 中的無伺服器 SQL 集區不支援此語法。

欄位名稱 資料類型 Description
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

此散發節點的標識碼。

許可

在 SQL Server 和 SQL 受控實例上,需要 VIEW SERVER STATE 許可權。

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

SQL Server 2022 和更新版本的許可權

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

Examples

A. 監視平行要求

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

Note

會話 內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