web-dev-qa-db-ja.com

エラー:0xC0202009 at Data Flow Task、OLE DB Destination [43]:SSIS Error Code DTS_E_OLEDBERROR。An OLE DBエラーが発生しました。エラーコード:0x80040E21

私のソースはTXTフラットファイルソースで、宛先はOLE DBタイプです。 (画像を参照)

enter image description here

パッケージを作成するための非常に コードプロジェクトの基本的なチュートリアル を見つけました。私は手順を終了しましたが、デバッグ時に奇妙なエラーが発生します(以下):

誰かがこのエラーについて説明できますか?ウェブでエラーを検索するのに何時間もかかりました。

SSISパッケージ「C:\ Users\USRNAME\Desktop\Projects\DataGeneratorSsis\DataGeneratorSsis\Package.dtsx」の開始。情報:データフロータスクでの0x4004300A、SSIS.Pipeline:検証フェーズが開始されています。情報:データフロータスクでの0x4004300A、SSIS.Pipeline:検証フェーズが開始されています。警告:データフロータスクでの0x80047076、SSIS.Pipeline:出力 "Flat File Source Output"(6)およびコンポーネント "Flat File Source"(2)の出力列 "intApplication"(7)は、その後データフローで使用されません。仕事。この未使用の出力列を削除すると、データフロータスクのパフォーマンスが向上する場合があります。情報:データフロータスクでの0x40043006、SSIS.Pipeline:実行フェーズの準備が開始されています。情報:データフロータスクでの0x40043007、SSIS.Pipeline:実行前フェーズが開始されています。情報:データフロータスクの0x402090DC、フラットファイルソース 2 :ファイル "C:\ Users\USRNAME\Desktop\ddd.txt"の処理が開始されました。情報:データフロータスクでの0x4004300C、SSIS.Pipeline:実行フェーズが開始されています。情報:データフロータスクの0x402090DE、フラットファイルソース 2 :ファイル "C:\ Users\USRNAME\Desktop\ddd.txt"で処理されたデータ行の総数は2です。エラー:0xC0202009 atデータフロータスク、OLE DB宛先[43]:SSISエラーコードDTS_E_OLEDBERROR。 OLE DBエラーが発生しました。エラーコード:0x80040E21。 OLE DBレコードが利用可能です。ソース:「Microsoft SQL Server Native Client 11.0」Hresult:0x80040E21説明:「複数ステップOLE DB操作でエラーが生成されました。各OLE DBステータス値を確認します(利用可能な場合)。完了しました。」エラー:データフロータスクでの0xC020901C、OLE DB Destination [43]:OLE DB Destination.Inputs [OLE DB Destination Input] .Columns [AppID] on _でエラーが発生しましたOLE DB Destination.Inputs [OLE DB Destination Input]。返された列のステータスは、「データが失われる可能性があるため、値を変換できませんでした。」です。エラー:データフロータスクでの0xC0209029、OLE DB宛先[43]:SSISエラーコードDTS_E_INDUCEDTRANSFORMFAILUREONERROR。エラーコード0xC0209077が発生したため、「OLE DB Destination.Inputs [OLE DB Destination Input]」が失敗し、「OLE DB Destination.Inputs [OLE DB Destination Input]」のエラー行の処理でエラー時の失敗が指定されています。指定されたコンポーネントの指定されたオブジェクトでエラーが発生しました。この前に、エラーに関する詳細情報が記載されたエラーメッセージが表示される場合があります。エラー:データフロータスクでの0xC0047022、SSIS.Pipeline:SSISエラーコードDTS_E_PROCESSINPUTFAILED。コンポーネント "OLE DB Destination"(43)のProcessInputメソッドは、入力 "OLE DB Destination Input"(56)の処理中にエラーコード0xC0209029で失敗しました。識別されたコンポーネントがProcessInputメソッドからエラーを返しました。このエラーはコンポーネント固有のものですが、エラーは致命的であり、データフロータスクの実行を停止します。この前に、エラーに関する詳細情報が記載されたエラーメッセージが表示される場合があります。情報:データフロータスクでの0x40043008、SSIS.Pipeline:実行後フェーズが開始されています。情報:データフロータスクの0x402090DD、フラットファイルソース 2 :ファイル "C:\ Users\USRNAME\Desktop\ddd.txt"の処理が終了しました。情報:データフロータスクの0x4004300B、SSIS.Pipeline: "OLE DB Destination"は0行を書き込みました。情報:データフロータスクでの0x40043009、SSIS.Pipeline:クリーンアップフェーズが開始されています。タスクが失敗しました:データフロータスク警告:パッケージ:0x80019002パッケージ:SSIS警告コードDTS_W_MAXIMUMERRORCOUNTREACHED。 Executionメソッドは成功しましたが、発生したエラーの数(4)は許可された最大数(1)に達しました。失敗します。これは、エラーの数がMaximumErrorCountで指定された数に達すると発生します。 MaximumErrorCountを変更するか、エラーを修正してください。 SSISパッケージ「C:\ Users\USRNAME\Desktop\Projects\DataGeneratorSsis\DataGeneratorSsis\Package.dtsx」が終了しました:失敗。

関連するエラーメッセージ

OLE DB Destination.Inputs [OLE DB Destination Input] .Columns [AppID]でOLE DB Destination.Inputs [OLE DB Destination Input]にエラーがありました。返された列のステータスは、「データが失われる可能性があるため、値を変換できませんでした」です。

6
SamekaTV

そのため、宛先のAppID列に対して無効なAppID列の値がソースにあるため、このエラーが発生しています。

可能な例:

  • 10文字の値を8文字のフィールドに挿入しようとしています。
  • 127より大きい値をtinyintフィールドに挿入しようとしています。
  • 値6.4578をdecimal(5,1)フィールドに挿入しようとしています。

SSISはメタデータによって管理されており、入力と出力を適切に設定して、両方の許容値が同じ範囲内にあることを期待しています。

9
Kyle Hale

これは通常、切り捨てによって発生します(入力値が大きすぎて宛先列に収まりません)。残念ながら、SSISは問題の列の名前を教えません。この情報を取得するには、サードパーティのコンポーネントを使用します。 http://naseermuhammed.wordpress.com/tips-tricks/getting-error-column-name-in-ssis/

1
Steve Jones

エラージェット4 oledbアップグレード可能kb4041678 kb4041681

クエリが異常な方法で失敗した場合、選択コンポーネントからこのエラーを受け取ることも可能です(例:サブクエリがOracle oledb接続で複数の行を返す)

0
Andrew Hill

私の場合、パッケージが実行されていた基になるシステムアカウントはロックアウトされていました。システムアカウントのロックを解除してパッケージを再実行すると、正常に実行されました。開発者は、デバッグ中にこのことを知り、サーバーに直接接続して接続のステータスを確認しようとしたと言いました。

0
Vishal Kapoor