【问题标题】:Save actual execution plan for query run as part of SSIS package将查询运行的实际执行计划保存为 SSIS 包的一部分
【发布时间】:2020-01-09 05:21:51
【问题描述】:

我正在尝试解决一些性能不佳的问题,并且需要获取作为 SSIS 包的一部分运行的存储过程的实际执行计划。

在 SSIS 包中运行之前的步骤,将参数传递给存储过程。

当我尝试在查询中手动将这些参数设置为独立代码时,性能会大不相同。

我知道如何在运行查询时从 SSMS 中获取实际的执行计划,但我不知道如何在从 SSIS 包运行时获取它。缓存中的预估计划还不够。

有没有办法显示 SSIS 包的特定部分的计划,或者生成它并保存到指定的位置,以便在它运行后可以检索它?

我可能使用了错误的搜索词,但是当我尝试用 Google 搜索解决方案时,我只得到一堆页面来解释如何在直接运行查询时显示实际执行计划,或者在缓存。


编辑

我使用的是 SQL Server 2014 (SP3-CU4)

——

编辑 2

我尝试使用 SQL profiler 来获取 xml 计划,但发现:
- 即使在刚开始跟踪后手动运行时,试图在跟踪中找到正确的计划也是一个正确的问题……在通宵的 ETL 中几乎不可能找到它。

我做错了吗? 有没有更好的办法?!

【问题讨论】:

  • SQL Server 2014“R2”? SQL Server 2014 没有 R2。
  • @Larnu :对不起,我的错 - 现在修改。应该是 SQL Server 2014 (SP3-CU4)。

标签: sql-server ssis sql-execution-plan


【解决方案1】:

您可以使用 SQL Server Profiler 来捕获图形查询计划:

https://www.mssqltips.com/sqlservertip/1264/capturing-graphical-query-plans-with-sql-server-profiler/

【讨论】:

  • 谢谢;经过一番摆弄后,我想我可以正常工作了。计划看起来与在 SSMS 中运行时有点不同......即它包括“实际行”但似乎不包括第一步,例如可以找到内存授予详细信息等的地方。这是正常的还是我找错地方了?
猜你喜欢
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2019-10-12
相关资源
最近更新 更多