获取SQL Server中动态SQL的查询/执行计划

15 浏览
0 Comments

获取SQL Server中动态SQL的查询/执行计划

如何在SQL Server 2005中查看执行动态SQL的执行计划?我无法在存放数据库的计算机上保存任何文件。以下是一个小例子:

declare @sqlcmd nvarchar(1000)

declare @param1 nvarchar(14)

set @param1 = '11111111%'

set @sqlcmd = 'SELECT * FROM myTable WHERE customer_id LIKE @customer_id'

EXECUTE sp_executesql @sqlcmd, N'@customer_id nvarchar(14)', @customer_id = @param1

所以我想看到实际用于SELECT查询的执行计划。

0
0 Comments

在SQL Server中,我们有时候会使用动态SQL语句来构建查询语句。但是,对于动态SQL语句,我们无法在编写代码时预先知道其执行计划。这给我们调试和优化查询语句带来了一些困难。

解决这个问题的方法之一是使用Profiler来捕获执行计划。Profiler是SQL Server提供的一个工具,可以用来监视和记录数据库的活动。我们可以在Profiler中配置一个跟踪,以捕获我们感兴趣的动态SQL语句的执行计划。

一旦我们捕获到了执行计划,我们可以使用一些第三方工具来查看和分析这些执行计划。其中一个比较常用的工具是SQL Sentry的Plan Explorer。Plan Explorer是一个免费的工具,可以帮助我们更好地理解和优化查询计划。

使用Plan Explorer,我们可以将捕获的执行计划导入进去,并对其进行分析。Plan Explorer会以图形化的方式展示执行计划,让我们更容易地理解查询语句的执行过程。我们可以通过查看不同操作符的详细信息,找出查询语句中的瓶颈,并对其进行优化。

总结起来,对于动态SQL语句的执行计划,我们可以通过使用Profiler来捕获,并使用工具如Plan Explorer来查看和分析这些执行计划。这样,我们就可以更好地调试和优化查询语句,提高数据库的性能。

0
0 Comments

在SQL Server Management Studio中按下ctrl + m以激活"Include Actual Execution Plan"。这将显示与任何普通查询一样的实际执行计划。

是的,但似乎我无法获得文本形式的计划?设置showplan_text on似乎没有给我计划。

确实不会,但如果你确实必须以那种格式查看它,那么你可以打印生成的查询并在SSMS中手动运行它。

使用SSMS 2016,我能够从动态SQL中显示文本形式的执行计划。第一步,SSMS选项,查询结果,SQL Server,结果转换为文本,将最大字符数设置为8192(重要,否则计划会被截断)。接下来,打开一个新的查询窗口,输入命令SET STATISTICS XML ON;然后输入你的sql...declare ....等等...设置输出为文本,然后执行。计划将以xml文本输出。也就是说,最大输出似乎是8192,如果有多个语句,可能会很快耗尽。

0