簡體   English   中英

是否可以在sql server上使用jdbc獲取查詢計划?

[英]is it possible to get the query plan out using jdbc on sql server?

我正在使用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 **/
  1. 確定您的Java會話ID。 從java打印@@SPID或使用SSMS,查看Java客戶端會話的sys.dm_exec_sessions和/或sys.dm_exec_connections (可以通過program_namehost_process_idclient_net_address等標識)。
  2. 執行你的陳述。 sys.dm_exec_requests中查找在1處找到的session_id
  3. 使用位於2處的plan_handle sys.dm_exec_query_plan提取計划。
  4. 將計划保存為.sqlplan文件並在SSMS中打開它

或者,您可以使用Profiler,將分析器附加到服務器並捕獲Showplan XML事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM