Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以在sql server上使用jdbc获得查询计划吗?_Java_Sql Server_Sql Server 2005_Jdbc_Jtds - Fatal编程技术网

Java 可以在sql server上使用jdbc获得查询计划吗?

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_

我使用的是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_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作为参数,请参见上面的编辑。。。