x日をリロードする必要がある場合、クエリはyesterdaysレコードを返し、将来は柔軟になります。したがって、プロジェクトのパラメータ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())))
複数の環境で期待どおりにこれは動作しますが、1つのサイトでの結果は本当に奇妙です。
SQLプロファイラを実行すると、上記のクエリを実行する前に、データ型がS.DateTime列であることが確認されています。ソースクエリ実行前のイベント:
set fmtonly on select S.DateTime from State.vStateHourly S where 1=2 set fmtonly off
このSSISが設定されているようですか?データDateTime型のパラメータ、トレースに次のイベントがあるので、:
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 Serverのバージョン:13.0.1601
このデータ型のルックアップを引き起こしている可能性がありますどのような任意のアイデアは、私は挙動を安定できますか?
あなたがこの回答を受け入れる必要があります。 – Hadi