【发布时间】: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