5

MySQL ソースから 4 つのテーブルを SQL Server 2008 にコピーしようとすると、エラーが発生します。

これはデータ フローの写真です。ご覧のとおり、そのうちの 2 つ (小さい方) は問題ありません。

ここに画像の説明を入力

OnErrorイベント ハンドラーを使用すると、エラーを確認できます。どうぞ。

SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80040E21。OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E21 説明: "複数ステップの OLE DB 操作でエラーが発生しました。利用可能な場合は、各 OLE DB ステータス値を確認してください。作業は行われませんでした。".

入力「OLE DB Destination Input」(510) の入力列「FechaHoraCorteAgente」(884) でエラーが発生しました。返された列のステータスは、「データ値が指定された型をオーバーフローしたため、変換に失敗しました。」でした。

SSIS エラー コード DTS_E_INDUCEDTRANSFORMFAILUREONERROR。エラー コード 0xC020907A が発生したため、"input "OLE DB Destination Input" (510)" が失敗しました。指定されたコンポーネントの指定されたオブジェクトでエラーが発生しました。これより前に、失敗に関する詳細情報を含むエラー メッセージが投稿される場合があります。

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

コンポーネント「ado net conptacto」(1) はデータを処理できませんでした。HRESULT からの例外: 0xC0047020

コンポーネント「ADO NET logllamados」(482) はデータを処理できませんでした。HRESULT からの例外: 0xC0047020

SSIS エラー コード DTS_E_PRIMEOUTPUTFAILED。コンポーネント「ado net conptacto」(1) の PrimeOutput メソッドがエラー コード 0xC02090F5 を返しました。パイプライン エンジンが PrimeOutput() を呼び出したときに、コンポーネントがエラー コードを返しました。エラー コードの意味はコンポーネントによって定義されますが、エラーは致命的であり、パイプラインは実行を停止しました。これより前に、失敗に関する詳細情報を含むエラー メッセージが投稿される場合があります。

SSIS エラー コード DTS_E_PRIMEOUTPUTFAILED。コンポーネント「ADO NET logllamados」(482) の PrimeOutput メソッドがエラー コード 0xC02090F5 を返しました。パイプライン エンジンが PrimeOutput() を呼び出したときに、コンポーネントがエラー コードを返しました。エラー コードの意味はコンポーネントによって定義されますが、エラーは致命的であり、パイプラインは実行を停止しました。これより前に、失敗に関する詳細情報を含むエラー メッセージが投稿される場合があります。

ここで何が起こっているか分かりますか?

4

3 に答える 3

5

「データ値が指定された型をオーバーフローしたため、変換に失敗しました。」かなり明白なようですが、収まらない場所に何かを挿入しようとしています。すべてのソース列を宛先列と比較して、次のことを確認することをお勧めします。

  • 長さは十分です
  • データ型は互換性があります

それを手に入れたい場合は、テーブルの構造を投稿できます

于 2012-05-09T14:46:09.750 に答える
3

ソース列の日時フィールドに 0000-00-00 があります。そのため、エラーが発生しました。

次の式で派生列を作成しました。

(DT_DBTIMESTAMP)(DAY([FechaHoraCorteAgente]) == 0 ? NULL(DT_DBTIMESTAMP) : [FechaHoraCorteAgente])
于 2012-05-09T15:22:42.477 に答える
2

ソースでの失敗です。宛先での挿入中にパッケージが失敗した場合、それは簡単に解決できます。ソース データが、SSIS ソースが期待するものよりも大きいという多くの状況に遭遇しました。

ソースを作成すると、SSIS は入力データを自動的にサンプリングして最大長を確認すると思います。しかし、その最大長を超えるとどうなるでしょうか? オーバーフローに関連する問題のほとんどがここに見られます。

また、不適切に処理されたソース データを扱う場合、多くの場合、日時フィールドに文字データが表示されます。そのようなシナリオは、パッケージも台無しにします。

于 2012-05-09T15:42:39.900 に答える