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