web-dev-qa-db-ja.com

SQL実行スクリプトを使用してSSISに日付変数を読み込む際のエラー

SSISでSQL実行タスクを使用して変数を設定しようとしています。テーブルの構造は次のとおりです。

CREATE TABLE BuildControl 
(Id INT NOT NULL Identity, BuildDate Date, 
     Country char(2), BuildStatus varchar(20), 
     BuildStatusDate DateTime)

SQLステートメントは

SELECT TOP 1 ? = Id, ? = BuildDate
FROM BuildControl
WHERE BuildStatus IS NULL
ORDER BY Id

? = BuildDateを削除すると問題なく動作します。パラメータマッピングタブは次のようになります。

enter image description here

私が受け取っているエラーはこれです:

SSIS package "WFG Statement Build.dtsx" starting.
Error: 0xC002F210 at Get Build Data, Execute SQL Task: Executing the query "SELECT TOP 1 ? = Id, ? = BuildDate
FROM BuildContr..." failed with the following error: "Error HRESULT E_FAIL has been returned from a call to a COM component.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Task failed: Get Build Data
Warning: 0x80019002 at WFG Statement Build: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED.  The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "WFG Statement Build.dtsx" finished: Failure.

日付出力変数に問題があると思います。削除すると問題が発生しないためです。サーバーと使用しているSSISのバージョンはどちらもSQL Server 2008 R2です。接続マネージャーはOLE Native OLE DB\SQL Server Native Client 10.0プロバイダーを使用したDB接続です。成功しないDateTimeを使用するようにテーブル構造を変更しようとしましたが、データ型としてDBDateおよびDBDateTimeを試しましたパラメータマッピングページでも成功しません。

私は完全に困惑しています。助けてくれてありがとう!

4
Kenneth Fisher

パラメータではなく、結果セットをマッピングしてみてください。設定は似ています。結果名は01で、selectステートメントでは? =は不要です。

SELECT TOP 1 Id, BuildDate
FROM BuildControl
WHERE BuildStatus IS NULL
ORDER BY Id

また、結果セットがSingle rowに設定されていることを確認してください。

5
SQLFox