【问题标题】:Getting query / execution plan for dynamic sql in SQL Server [duplicate]在 SQL Server 中获取动态 sql 的查询/执行计划 [重复]
【发布时间】:2011-07-01 22:32:41
【问题描述】:

可能重复:
How do I obtain a Query Execution Plan?

如何查看 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 查询的执行计划。

【问题讨论】:

    标签: sql sql-server-2005 dynamic-sql sql-execution-plan


    【解决方案1】:

    您可以使用分析器来捕获执行计划。然后,您可以使用类似 SQL Sentry 的计划资源管理器 (http://www.sqlsentry.com/plan-explorer/sql-server-query-view.asp) 来查看/分解捕获的查询计划。

    【讨论】:

      【解决方案2】:

      只需在 SQL Server Management Studio 中按 ctrl + m 即可激活“包括实际执行计划”。这将显示真正的执行计划,就像任何普通查询一样。

      【讨论】:

      • 啊,是的,但好像我无法将其转为文本?设置 showplan_text 并没有给我它看起来的计划。
      • 不,它没有,但是如果您绝对必须以该格式查看它,那么您可以打印生成的查询并在 SSMS 中手动运行它。
      • 使用 SSMS 2016 我能够从动态 SQL 中获取执行计划以显示文本。第 1 步,SSMS 选项,查询结果,SQL Server,结果为文本,将最大字符设置为 8192(重要的其他计划被截断)。接下来,打开一个新的 New Query 窗口,输入命令 SET STATISTICS XML ON;然后你的 sql... 声明 .... etc.. 将输出设置为 Text,然后执行。计划将xml文本输出。也就是说,最大输出似乎是 8192,可以通过多个语句快速耗尽。
      猜你喜欢
      • 2011-11-13
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多