【问题标题】:SSIS SQL Server Execution plan based on local variable基于局部变量的 SSIS SQL Server 执行计划
【发布时间】:2018-04-25 09:02:58
【问题描述】:

我有一个关于 SSIS 的查询,它从 sql server 检索过去 N 天的数据

WHERE 日期 > = DATEADD(dd,?,getdate())

我们设置了一个本地参数,该参数设置为 -45 天,但其使用的实际值来自设置为 -3 的环境参数。

在执行过程中,它加载了最后 3 天没有任何问题。

我的问题是,在创建执行计划时,数据库引擎是使用包中的局部变量(-45)还是全局变量(-3)?

【问题讨论】:

  • 我知之甚少,无法给出权威答案。我的信念是,查询通过 SSIS 传递给带有适当参数的数据库引擎,然后从缓存中生成或重用执行计划。
  • 此查询存储在 SSIS 包中,还是存储过程中?
  • @TabAlleman查询存储在SSIS包中
  • 当我在 SSMS 上用 -3 天对其进行测试时,它需要 7 秒,并且它会在非集群索引上进行索引搜索。再次在 SSMS 上使用 -45 天需要 20 分钟,并且它会进行聚集索引扫描。昨晚执行作业时花了 20 分钟,这意味着它进行了聚集索引扫描。我已将包中的局部变量更改为 -3 并进行了部署。明天早上我会告诉你结果。

标签: sql-server ssis


【解决方案1】:

SQL Server 正在选择一个执行计划来运行 SSIS 传递给它的查询。 SQL Server 不知道 SSIS 中的变量/参数/配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2020-04-30
    • 2011-04-12
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多