我面临以下问题。我需要以编程方式进入我的 vb.net 程序 SQL 的 xml 查询计划以进行查询。然后我将解析它并获取一些信息,但事实并非如此。
通过管理工作室,当我使用以下命令集时,我得到了我想要的结果
set showplan_xml on
GO
select * from testtable
GO
set showplan_xml off
GO
问题是,我可以从程序中发送 sql 命令来执行或 sql 命令来获取数据,但一次只能发送一个,这是因为我发送的命令带有特定的自定义类,该类与连接数据库的应用程序服务器连接。我没有直接访问数据库的权限,无法使用我在谷歌搜索时找到的所有方法,或者至少我不太了解这个定制类的所有方法。
我正在尝试使用查询计划缓存找到解决方法。我在想是否有任何方式在查询结束时使用选项以强制 sql 缓存 query_plan,然后使用以下方法获取 xml
SELECT cplan.usecounts, cplan.objtype, qtext.text, qplan.query_plan
FROM sys.dm_exec_cached_plans AS cplan
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS qtext
CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS qplan
ORDER BY cplan.usecounts DESC