適用於:✅ Microsoft Fabric 中的 SQL 分析端點和倉儲
利用現有的動態管理檢視(DMV)來監控 Microsoft Fabric 中的連線、會話及請求狀態。 欲了解更多執行 T-SQL 查詢的工具與方法,請參閱 「查詢倉庫」。
在這個教學中,你將學習如何利用動態管理視圖(DMV)來監控執行中的 SQL 查詢。
如何使用查詢生命週期動態管理檢視 (DMV) 來監視連線、工作階段和要求
三個 DMV 提供即時 SQL 查詢生命週期洞察:
- sys.dm_exec_connections 回傳倉庫與引擎間建立的每個連線資訊。
- sys.dm_exec_sessions 回傳每個項目與引擎間認證的會話資訊。
- sys.dm_exec_requests 回傳會話中每個活躍請求的資訊。
這些 DMV 一起可協助你回答例如下列問題:
- 誰在主持一場遊戲?
- 這場遊戲什麼時候開始的?
- 連接倉庫的連線ID是什麼,以及執行請求的會話是什麼?
- 有多少個查詢目前正在執行中?
- 哪些查詢執行時間較長?
先決條件
- 一個有活躍 Fabric 容量的工作空間。
- 現有的倉庫或 SQL 分析端點。
- 一種 T-SQL 查詢工具,例如 SQL 查詢編輯器或 SQL Server Management Studio(SSMS)。
- 查詢 DMV 和管理會話的權限。
查詢 DMV 及管理會話所需的權限
- 工作區 管理員 可以執行三個 DMV(
sys.dm_exec_connections、sys.dm_exec_sessions和sys.dm_exec_requests),並查看工作區內所有使用者的會話、連線及請求資訊。 - 工作區的 成員、貢獻者或 檢視者可以執行
sys.dm_exec_sessions和sys.dm_exec_requests,且只能查看資料倉儲中他們自己的工作階段與請求。 這些角色無法執行sys.dm_exec_connections。 - 只有工作區 管理員 能執行
KILL停止會話的指令。
尋找倉庫連結與會話
聯結 sys.dm_exec_connections 和 sys.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;
識別並終止長時間執行的查詢
請依照以下步驟找到倉庫中長期執行的查詢,找出發起查詢的使用者,若需要,則停止執行該查詢的會話。
列出作用中的倉儲請求,依各自自到達後執行至今的時間長短排序:
SELECT request_id, session_id, start_time, total_elapsed_time FROM sys.dm_exec_requests WHERE status = 'running' ORDER BY total_elapsed_time DESC;找出啟動包含該長期查詢的會話的使用者。 用上一步中的
session_id值取代<session_id>:SELECT login_name FROM sys.dm_exec_sessions WHERE session_id = <session_id>;如有需要,可執行含有
session_id的KILL指令,以取消並回復該工作階段:KILL <session_id>;例如,若要停止工作階段
101:KILL 101;
如需診斷及解決查詢封鎖的逐步指南,請參閱 Fabric Data Warehouse 中查詢封鎖的疑難排解。