使用 DMV 監視連線、工作階段和要求
適用於:✅ Microsoft Fabric 中的 SQL 分析端點和倉儲
您可以使用現有的動態管理檢視 (DMV) 來監視 Microsoft Fabric 中的連線、會話和要求狀態。 如需有關執行 T-SQL 查詢之工具和方法的詳細資訊,請參閱 查詢倉儲。
如何使用查詢生命週期 DMV 監視連線、工作階段和要求
針對目前版本,提供三個動態管理檢視 (DMV),讓您接收即時 SQL 查詢生命週期深入解析。
- sys.dm_exec_connections
- 傳回倉儲與引擎之間建立之每個連線的相關資訊。
- sys.dm_exec_sessions
- 傳回項目與引擎之間驗證之每個工作階段的相關資訊。
- sys.dm_exec_requests
- 傳回工作階段中每個作用中要求的相關資訊。
這三個 DMV 提供下列案例的詳細深入解析:
- 執行工作階段的使用者是誰?
- 使用者何時啟動工作階段?
- 資料倉儲的連線識別碼以及執行要求的工作階段的識別碼是什麼?
- 有多少個查詢正在主動執行?
- 哪些查詢長時間執行?
在本教學課程中,了解如何使用動態管理檢視 (DMV) 監視執行中的 SQL 查詢。
範例 DMV 查詢
下列範例會查詢 sys.dm_exec_sessions
,以尋找目前正在執行的所有工作階段。
SELECT *
FROM sys.dm_exec_sessions;
尋找連線與工作階段之間的關聯性
下列範例會將 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;
此第二個查詢會顯示哪個使用者執行了具有長時間執行查詢的工作階段。
SELECT login_name
FROM sys.dm_exec_sessions
WHERE 'session_id' = 'SESSION_ID WITH LONG-RUNNING QUERY';
此第三個查詢會顯示如何在 session_id
上將 KILL 命令與長時間執行的查詢搭配使用。
KILL 'SESSION_ID WITH LONG-RUNNING QUERY'
例如:
KILL '101'
權限
- 系統管理員有權執行所有三個 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
命令。