1

このエラーは以前にも見たことがありますが、手動で値を入力することで回避できましたが、それは 4 行の場合で、今回は 100 行以上でこのエラーが発生します。

問題は、それと呼ばれるこの列Shiptoには、1 桁の数字、2 桁の数字、または単語の 3 つのいずれかが含まれることAllです。インポートは 1 桁と 2 桁の数字に対しては問題なく機能しますが、インポートすると次のAllエラーが発生します。

[SSIS.Pipeline] エラー: SSIS エラー コード DTS_E_PROCESSINPUTFAILED。コンポーネント "OLE DB Destination" (162) の ProcessInput メソッドは、入力 "OLE DB Destination Input" (175) の処理中にエラー コード 0xC0202009 で失敗しました。識別されたコンポーネントが ProcessInput メソッドからエラーを返しました。エラーはコンポーネントに固有のものですが、エラーは致命的であり、データ フロー タスクの実行が停止します。これより前に、失敗に関する詳細情報を含むエラー メッセージが投稿される場合があります。

このパッケージは、あるテーブルから値を取得し、別のテーブルに挿入します。値を取得するテーブルを確認しましたが、列shiptoが null ではありません。

唯一の違いは、2 つのテーブルの構造にあります。一時テーブルでは、実際のテーブルでは許可されていないその列で null が許可されます。両方のテーブルには、列がvarchar(20).

このためのデータ フローに、次のようなチェック ボックスがあることに気付きましたcheck constraints。これをオフにすると、その問題は解決しますか? 列が null ではないためです。

ご協力いただきありがとうございます。必要な追加情報があれば投稿します。ありがとうございました。

4

1 に答える 1

6

いくつかの可能性があります:

  1. ソーステーブルにnullがあります。ターゲットテーブルでは、その列にnull値を含めることはできません。いくつかのオプションがあります。テーブルから直接データソースを使用している場合は、代わりにSQLコマンドを使用し、クエリでnullを処理します。

    SELECT field1、field2、isnull(shipto、'')field3、field4、....FROMテーブル

    上記の空の文字列で必要なものを使用して、null値をより受け入れ可能な値に置き換えることができます。

    これを実行したくない場合は、ターゲットデータベースでnullを許可するか、ソースデータベーステーブルにnullが存在する理由を特定して、発生しないようにする必要があります。

  2. フィールドはマッピングされていません。ソースに、宛先フィールドにマップされていない値があります。

  3. ソースと宛先の間の他の変換では、NULL値が導入されています。

于 2012-11-20T17:35:56.047 に答える