透過使用 DMV 監控連線、會話和請求

適用於:✅ Microsoft Fabric 中的 SQL 分析端點和倉儲

利用現有的動態管理檢視(DMV)來監控 Microsoft Fabric 中的連線、會話及請求狀態。 欲了解更多執行 T-SQL 查詢的工具與方法,請參閱 「查詢倉庫」。

在這個教學中,你將學習如何利用動態管理視圖(DMV)來監控執行中的 SQL 查詢。

如何使用查詢生命週期動態管理檢視 (DMV) 來監視連線、工作階段和要求

三個 DMV 提供即時 SQL 查詢生命週期洞察:

這些 DMV 一起可協助你回答例如下列問題:

  • 誰在主持一場遊戲?
  • 這場遊戲什麼時候開始的?
  • 連接倉庫的連線ID是什麼,以及執行請求的會話是什麼?
  • 有多少個查詢目前正在執行中?
  • 哪些查詢執行時間較長?

先決條件

  • 一個有活躍 Fabric 容量的工作空間。
  • 現有的倉庫或 SQL 分析端點。
  • 一種 T-SQL 查詢工具,例如 SQL 查詢編輯器或 SQL Server Management Studio(SSMS)。
  • 查詢 DMV 和管理會話的權限。

查詢 DMV 及管理會話所需的權限

  • 工作區 管理員 可以執行三個 DMV(sys.dm_exec_connectionssys.dm_exec_sessionssys.dm_exec_requests),並查看工作區內所有使用者的會話、連線及請求資訊。
  • 工作區的 成員貢獻者檢視者可以執行 sys.dm_exec_sessionssys.dm_exec_requests,且只能查看資料倉儲中他們自己的工作階段與請求。 這些角色無法執行 sys.dm_exec_connections
  • 只有工作區 管理員 能執行 KILL 停止會話的指令。

尋找倉庫連結與會話

聯結 sys.dm_exec_connectionssys.dm_exec_sessions,即可查看每個與資料倉儲連線的工作階段:

SELECT connections.connection_id,
    connections.connect_time,
    sessions.session_id, sessions.login_name, sessions.login_time, sessions.status
FROM sys.dm_exec_connections AS connections
INNER JOIN sys.dm_exec_sessions AS sessions
    ON connections.session_id = sessions.session_id;

識別並終止長時間執行的查詢

請依照以下步驟找到倉庫中長期執行的查詢,找出發起查詢的使用者,若需要,則停止執行該查詢的會話。

  1. 列出作用中的倉儲請求,依各自自到達後執行至今的時間長短排序:

    SELECT request_id, session_id, start_time, total_elapsed_time
    FROM sys.dm_exec_requests
    WHERE status = 'running'
    ORDER BY total_elapsed_time DESC;
    
  2. 找出啟動包含該長期查詢的會話的使用者。 用上一步中的 session_id 值取代 <session_id>

    SELECT login_name
    FROM sys.dm_exec_sessions
    WHERE session_id = <session_id>;
    
  3. 如有需要,可執行含有 session_idKILL 指令,以取消並回復該工作階段:

    KILL <session_id>;
    

    例如,若要停止工作階段 101

    KILL 101;
    

如需診斷及解決查詢封鎖的逐步指南,請參閱 Fabric Data Warehouse 中查詢封鎖的疑難排解