is it possible to get the query plan out using jdbc on sql server?
I am usi开发者_运维问答ng the JTDS driver and I'd like to make sure my java client is receiving the same query plan as when I execute the SQL in Mgmt studio, is there a way to get the query plan (ideally in xml format)?
basically, I'd like the same format output as
set showplan_xml on
in management studio. Any ideas?
Some code for getting the plan for a 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 **/
- Identify your Java session id. Print
@@SPIDfrom java or use SSMS and look intosys.dm_exec_sessionsand/orsys.dm_exec_connectionsfor your Java client session (it can be identified byprogram_name,host_process_id,client_net_addressetc). - Execute your statement. Look in
sys.dm_exec_requestsfor thesession_idfound at 1. - Extract the plan using
sys.dm_exec_query_planfrom theplan_handlefound at 2. - Save the plan as a .sqlplan file and open it in SSMS
Alternatively you can use the Profiler, attach the profiler to server and capture the Showplan XML event.
加载中,请稍侯......
精彩评论