我正在使用JTDS驱动程序,我想确保我的java客户端收到与在Mgmt studio中执行SQL时相同的查询计划,有没有办法获得查询计划(理想情况下是xml格式)?基本上,我想要相同的格式输出set showplan_xml on 在管理工作室.有任...
我正在使用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 **/
解决方法:
>确定您的Java会话ID.从java打印@@ 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.
>使用sys.dm_exec_query_plan从2处的plan_handle中提取计划.
>将计划另存为.sqlplan文件并在SSMS中打开它
或者,您可以使用Profiler,将分析器附加到服务器并捕获Showplan XML事件.
本文标题为:java – 是否可以在sql server上使用jdbc获取查询计划?
- java 安全 ysoserial CommonsCollections6 分析 2023-06-30
- java – tomcat 7 JDBC连接池 – 每个数据库的独立池? 2023-11-02
- SpringBoot多环境开发该如何配置 2023-05-14
- Spring更简单的存储方式与获取方式详解 2023-01-03
- java并发使用CountDownLatch在生产环境翻车剖析 2023-04-07
- SpringBoot项目打成war和jar的区别说明 2022-12-07
- Java实现树形List与扁平List互转的示例代码 2023-07-15
- SpringMVC视图转发重定向区别及控制器详解 2022-11-25
- java – Tomcat JDBC Conencton Pool MySQL提供“Broken pipe”问题,即使是连接验证也是如此 2023-11-03
- Java结构性设计模式中的装饰器模式介绍使用 2023-05-25