DMV を使用して接続、セッション、および要求を監視する

適用対象:✅ Microsoft Fabric の SQL エンドポイントおよびウェアハウス

既存の動的管理ビュー (DMV) を使用して、Microsoft Fabricの接続、セッション、および要求の状態を監視します。 T-SQL クエリを実行するツールとメソッドの詳細については、「ウェアハウスのクエリ」 参照してください。

このチュートリアルでは、動的管理ビュー (DMV) を使用して実行中の SQL クエリを監視する方法について説明します。

クエリ ライフサイクル DMV を使用して接続、セッション、および要求を監視する方法

3 つの DMV は、ライブ SQL クエリライフサイクルの分析情報を提供します。

  • sys.dm_exec_connections は、ウェアハウスとエンジンの間に確立された各接続に関する情報を返します。
  • sys.dm_exec_sessions は、項目とエンジンの間で認証された各セッションに関する情報を返します。
  • sys.dm_exec_requestsは 、セッション内のアクティブな各要求に関する情報を返します。

これらの DMV を組み合わせることで、次のような質問に答えるのに役立ちます。

  • セッションを実行しているのは誰ですか?
  • セッションはいつ開始されましたか?
  • Warehouse への接続の ID と、要求を実行しているセッションは何ですか?
  • アクティブに実行されているクエリの数
  • 実行時間の長いクエリはどれですか?

前提条件

  • アクティブなFabric容量を持つワークスペース。
  • 既存の Warehouse または SQL 分析エンドポイント。
  • SQL クエリ エディターや SQL Server Management Studio (SSMS) などの T-SQL クエリ ツール。
  • DMV にクエリを実行し、セッションを管理するためのアクセス許可。

DMV のクエリとセッションの管理に必要なアクセス許可

  • ワークスペース 管理者 は、3 つの 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;

長時間実行されているクエリを特定して KILL する

次の手順を使用して、ウェアハウスで実行時間の長いクエリを検索し、それを開始したユーザーを特定し、必要に応じて、それを実行しているセッションを停止します。

  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. 必要に応じて、KILLを使用して session_id コマンドを実行して、セッションを取り消してロールバックします。

    KILL <session_id>;
    

    たとえば、セッション 101を停止するには、次のようにします。

    KILL 101;
    

クエリ ブロックの診断と解決に関する詳細なガイドについては、「Fabric Data Warehouseでのクエリ ブロックのトラブルシューティング」を参照してください。