DMV を使用した接続、セッション、要求を監視する
適用対象:✅ Microsoft Fabric の SQL エンドポイントおよびウェアハウス
既存の動的管理ビュー (DMV) を使用して、Microsoft Fabric で接続、セッション、要求の状態を監視できます。 T-SQL クエリを実行するツールとメソッドの詳細については、ウェアハウスのクエリに関するページを参照してください。
クエリ ライフサイクルの DMV を使用して接続、セッション、要求を監視する方法
現在のバージョンでは、ライブ SQL クエリ ライフサイクルの分析情報を受け取るために、3 つの動的管理ビュー (DMV) が用意されています。
- sys.dm_exec_connections
- ウェアハウスとエンジンの間に確立された各接続に関する情報が返されます。
- sys.dm_exec_sessions
- 項目とエンジンの間で認証された各セッションに関する情報が返されます。
- sys.dm_exec_requests
- セッション内のアクティブな各要求に関する情報が返されます。
これら 3 つの DMV では、次のシナリオに関する詳細な分析情報が提供されます。
- セッションを実行しているユーザー
- ユーザーがセッションを開始したタイミング
- データ ウェアハウスへの接続と、要求が実行されているセッションの ID
- アクティブに実行されているクエリの数
- 長期のクエリ
このチュートリアルでは、動的管理ビュー (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;
長期のクエリを特定して KILL する
この最初のクエリでは、長期のクエリの一覧が、クエリが到着してからの実行時間が長い順で識別されます。
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 番目のクエリでは、長期のクエリが存在するセッションを実行したユーザーが示されます。
SELECT login_name
FROM sys.dm_exec_sessions
WHERE 'session_id' = 'SESSION_ID WITH LONG-RUNNING QUERY';
この 3 番目のクエリでは、長期のクエリが存在する session_id
に対して KILL コマンドを使用する方法が示されます。
KILL 'SESSION_ID WITH LONG-RUNNING QUERY'
次に例を示します。
KILL '101'
アクセス許可
- 管理者には、3 つの 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
コマンドを実行するアクセス許可を持つのは、管理者のみです。