5

JTDS ドライバーを使用していますが、Java クライアントが Mgmt studio で SQL を実行したときと同じクエリ プランを受信して​​いることを確認したいのですが、クエリ プラン (理想的には xml 形式) を取得する方法はありますか?

基本的に、私は同じ形式の出力が欲しい

set showplan_xml on 

管理スタジオにて。何か案は?

session_id の計画を取得するためのコード

SELECT usecounts, cacheobjtype,
  objtype, [text], query_plan
FROM sys.dm_exec_requests req, sys.dm_exec_cached_plans P
  CROSS APPLY
    sys.dm_exec_sql_text(plan_handle)
  CROSS APPLY
    sys.dm_exec_query_plan(plan_handle)    
WHERE cacheobjtype = 'Compiled Plan'
    AND [text] NOT LIKE '%sys.dm_%'
    --and text like '%sp%reassign%'
    and p.plan_handle = req.plan_handle
    and req.session_id = 70 /** <-- your sesssion_id here **/
4

1 に答える 1

7
  1. Java セッション ID を特定します。Java から印刷するか@@SPID、SSMS を使用して、Java クライアント セッションを調べます ( 、などで識別できます)。sys.dm_exec_sessionssys.dm_exec_connectionsprogram_namehost_process_idclient_net_address
  2. ステートメントを実行します。sys.dm_exec_requests1でsession_id見つかったものを探します。
  3. 2 で見つかったsys.dm_exec_query_planものからを使用してプランを抽出します。plan_handle
  4. プランを .sqlplan ファイルとして保存し、SSMS で開きます

または、プロファイラーを使用して、プロファイラーをサーバーにアタッチし、Showplan XMLイベントをキャプチャすることもできます。

于 2009-11-24T17:54:46.340 に答える