Java 可以在sql server上使用jdbc获得查询计划吗?
我使用的是JTDS驱动程序,我想确保我的java客户机接收到的查询计划与我在Mgmt studio中执行SQL时相同,是否有方法获取查询计划(最好是xml格式) 基本上,我希望输出的格式与Java 可以在sql server上使用jdbc获得查询计划吗?,java,sql-server,sql-server-2005,jdbc,jtds,Java,Sql Server,Sql Server 2005,Jdbc,Jtds,我使用的是JTDS驱动程序,我想确保我的java客户机接收到的查询计划与我在Mgmt studio中执行SQL时相同,是否有方法获取查询计划(最好是xml格式) 基本上,我希望输出的格式与 set showplan_xml on 在管理工作室。有什么想法吗 获取会话id计划的一些代码 SELECT usecounts, cacheobjtype, objtype, [text], query_plan FROM sys.dm_exec_requests req, sys.dm_exec_
set showplan_xml on
在管理工作室。有什么想法吗
获取会话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 **/
选择usecounts、cacheobjtype、,
对象类型,[text],查询计划
从sys.dm_exec_requests req,sys.dm_exec_cached_plan P
交叉应用
sys.dm_exec_sql_text(计划句柄)
交叉应用
sys.dm_exec_query_plan(计划句柄)
其中cacheobjtype='已编译计划'
而[文本]与“%sys.dm_389;%”不同
--以及类似“%sp%重新分配%”的文本
p.plan\u handle=req.plan\u handle
和req.session_id=70/**
识别Java会话id。从Java打印@@SPID
,或使用SSMS查看和/或Java客户端会话(它可以通过程序名
,主机进程id
,客户端网络地址
等进行识别)
执行你的陈述。查找在1处找到的会话id
使用在2处找到的plan\u句柄
提取计划
将计划另存为.sqlplan文件,并在SSMS中打开它
或者,您也可以使用探查器,将探查器连接到服务器并捕获事件。谢谢Remus,我(当然是通过谷歌!)已经拼凑了一些SQL来完成此操作,将会话id作为参数,请参见上面的编辑。。。