SSIS 2008 SQL出力パラメータマッピングDATETIME2の問題を実行します
-
22-08-2019 - |
質問
私は、パッケージ変数に格納プロシージャの出力パラメータをマッピングするためにSSIS 2008年にSQLタスクの実行に使用しようとしています。
パッケージ変数は、SSIS型日時と格納プロシージャパラメータは、SQL型DATETIMEである。
SQLステートメントがEXEC GetCurrentDate @CurrentDate=?
、パラメータマッピング画面であり、パラメータは、方向出力とパッケージ変数にマッピングされ、データタイプDBTIMESTAMPが指定されます。
私は次のエラーを取得するパッケージを実行する場合:
私は、クエリされて実行時にトレースを実行する場合は、[SQL実行タスク]エラー:実行 クエリ「EXEC GetCurrentDate @ CURRENTDATE =? "で失敗しました 次のエラー:「のタイプ 値を変数に代入されています 「ユーザー:: CURRENTDATEは」とは異なり 現在の変数の型。変数のかもしれません 実行時にタイプを変更しません。 変数の型は除き、厳しいです Object型の変数。 」。可能 失敗の理由:問題 クエリ、「ResultSetの」プロパティが設定されていません 正しく、パラメータが設定されていません 正しく、または接続ではありません 正しく確立します。
私はタイプがDATETIME2と仮定されている参照してください。
declare @p3 datetime2(7)
set @p3=NULL
exec sp_executesql N'EXEC GetCurrentDate @CurrentDate=@P1 ',N'@P1 datetime2(7) OUTPUT',@p3 output
select @p3
タイプがDATETIME2であると仮定している理由を誰もが知っていますか?
おかげ
解決
Micorsoft接続バグレポートに答えを見つけます:
これは行動を期待して、新しいSQL日時タイプ変更の結果ですと私たちは、このケースを閉じています。あなたは私たちが値を保持するVARIANTを使用して、データの損失を防ぐための唯一の方法は、BSTRバリアントとして値を格納することで、COM相互運用機能の過程で、sqlタスクのネイティブのOLE DB接続マネージャを使用しています。あなたは、String型へのユーザー:: dateParamを変更した場合、それは動作しますか、COM相互運用機能をバイパスするために管理接続マネージャを使用するように切り替えることができます。
http://connect.microsoft.com/SQLServer/feedback /ViewFeedback.aspx?FeedbackID=307835する
他のヒント
DATE
ではなく、SSISのタスクでDBTIMESTAMP
としてINOUT /出力パラメータを指定してみます。
これは確かに私が働いてきたSSIS 2005のパッケージで動作します。
また、<のhref = "http://blogs.conchango.com/jamiethomson/archive/2005/03/12/SSIS_3A00_-Datetime-variables-don_2700_t-always-do-what-you見てみる価値があります-expect.aspx」のrel = 『nofollowをnoreferrer』>これをカバーし、このリンクのと同様に、SSISと日付を持つ他の問題のいくつます。