1
如果需要重新加载x天,我希望查询返回昨天的记录,并且在将来会灵活。因此,项目参数DaysToReload是Int32,值设置为-1。SSIS在运行时更改OLE DB源查询参数数据类型
源查询看起来是这样的:
SELECT * FROM State.vStateHourly S
WHERE S.DateTime >= DATEADD(d, convert(int, ?), DATEADD(d,0,DATEDIFF(d,0,GETDATE())))
可正常工作在多种环境中,但在一个网站上的结果是很奇怪的。
运行SQL事件探查器时,我发现它正在执行上述查询之前检查S.DateTime列的数据类型。源查询执行前的事件是:
set fmtonly on select S.DateTime from State.vStateHourly S where 1=2 set fmtonly off
在此SSIS似乎设置?参数的数据类型的日期时间,因为在跟踪下列事件:随后是
declare @p1 int
set @p1=5
exec sp_prepare @p1 output,N'@P1 datetime',N'SET FMTONLY OFF;
select top 10 *
FROM
State.vStateHourly S
WHERE S.DateTime >= DATEADD(d, convert(int, @P1), DATEADD(d,0,DATEDIFF(d,0,GETDATE())))',1
select @p1
:
exec sp_execute 1,'1899-12-29 00:00:00'
我不能遵守任何其他环境中,提供给我的这种行为。
源的SQL Server版本:10.50.6529.0
SSIS服务器版本:13.0.1601
任何想法可能会导致这种数据类型查找,我怎么能稳定的行为?
即使是你的,你也必须接受这个答案 – Hadi