2009-05-18 4 views
3

SSIS 2008でExecute SQLタスクを使用して、ストアプロシージャの出力パラメータをパッケージ変数にマップしようとしています。SSIS 2008 SQL出力パラメータマッピングの実行datetime2の問題

パッケージ変数はSSIS型DateTimeであり、ストアプロシージャパラメータはSQL型DATETIMEです。

SQLステートメントはEXEC GetCurrentDate @CurrentDate=?で、パラメータマッピング画面では、パラメータは方向出力とデータ型DBTIMESTAMPを指定してパッケージ変数にマップされます。

私は次のエラーを取得パッケージを実行すると:私はタイプがDATETIME2と仮定されている参照のクエリという実行でトレースを実行する場合

​​

を:

declare @p3 datetime2(7) 
set @p3=NULL 
exec sp_executesql N'EXEC GetCurrentDate @[email protected] ',N'@P1 datetime2(7) OUTPUT',@p3 output 
select @p3 

ん誰もがなぜ型がdatetime2であると仮定しているのか知っていますか?

おかげ

答えて

3

は、Micorsoft接続バグレポートの答えが見つかりました:

We are closing this case as this is expected behaviour and is a result of the new sql datetime type change. You are using a native oledb connection manager for sql task, in the process of COM interop, we use VARIANT to hold the value and the only way to prevent data loss is to store the value as BSTR variant. If you change User::dateParam to String type it will work, or you can switch to use managed connection manager to bypass the COM interop.

http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=307835

0

DATEではなく、SSISのタスクでDBTIMESTAMPとしてINOUT /出力パラメータを指定してみてください。

これは、私が取り組んだ2005年のSSISパッケージでは確かに動作します。

this linkもご覧ください。これには、これとSSISと日付に関するその他の2つの問題が含まれています。

関連する問題