我正在使用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 **/
答案 0 :(得分:6)
@@SPID
或使用SSMS并查看sys.dm_exec_sessions
和/或sys.dm_exec_connections
以获取Java客户端会话(可由program_name
,host_process_id
标识, client_net_address
等。)sys.dm_exec_requests
中查找1中找到的session_id
。plan_handle
在{2}找到的{{1}}提取计划。或者,您可以使用Profiler,将探查器附加到服务器并捕获sys.dm_exec_query_plan
事件。