SQL Server Integration Services を使用して IBM DB2 データベースにデータを挿入するときのエラー メッセージ

元の製品バージョン: ホスト統合サーバー
元の KB 番号: 2848234

現象

次のような状況で問題が発生します。

  • SQL Server Integration Services (SSIS) と OLE DB Provider for DB2 を使用して、IBM DB2 データベースにデータを挿入します。

  • SSIS パッケージの OLE DB 変換先は、 で Accessmode = OpenRowset Using FastLoad構成されます。

  • ソース SQL Server データベースには、DateTime2 と Date データ型として定義された列に NULL 値がいくつか含まれており、それぞれ TimeStamp および Date データ型として定義された IBM DB2 列に挿入されます。

IBM DB2 データベースにデータを挿入する SSIS プロセス中に、次のようなエラーが発生する可能性があります。

エラー: SSIS エラー コード DTS_E_OLEDBERROR。 OLE DB エラーが発生しました。 エラー コード: 0x80004005 OLE DB レコードを使用できます。 ソース: "Microsoft DB2 OLE DB Provider" Hresult: 0x80004005説明: "Unspecified error"。

OLE DB レコードを使用できます。 ソース: "Microsoft DB2 OLE DB Provider" Hresult: 0x80040E14 説明: "datetime 値の文字列表現の構文が正しくありません。 SQLSTATE: 22007、SQLCODE: -180"

解決方法

この問題を解決するには、2 つの方法があります。

  • の使用FastLoadを無効にするために使用AccessMode = OpenRowsetする SSIS パッケージの OLE DB 変換先を変更します。 このオプションの欠点は、各行が一度に 1 つずつ挿入されるため、DB2 データベースへの挿入のパフォーマンスが大幅に低下することです。

  • SSIS が IBM DB2 システムに接続するために使用する DB2 接続文字列に、次のパラメーターを追加します。

    Use Early Metadata=true