web-dev-qa-db-ja.com

SSISテキストはステータス値4で切り捨てられました

SSISパッケージを開発し、CSVフラットファイルから既存のSQLテーブルを更新しようとしています。 1つの列を除き、すべての列が正常に更新されています。 truncateでこの列を無視すると、パッケージは正常に完了します。だから、これは切り捨てられた問題であり、エラーではないことを知っています。

この列は、ほとんどすべての行で空です。ただし、このフィールドが200〜300文字である行がいくつかあります。私のデータ変換タスクはこのフィールドをDT_WSTRとして識別しましたが、他の場所で読んだものからこれはDT_NTEXTである可能性があります。両方試してみましたが、DT_WSTRを500に設定しました。しかし、どれも私の問題を解決しませんでした。どうすれば修正できますか?この列は、SQLテーブルにどのデータ型である必要がありますか?

Error: 0xC02020A1 at Data Flow Task 1, Source - Berkeley812_csv [1]: Data conversion failed. The data conversion for column "Reason for Delay in Transition" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
Error: 0xC020902A at Data Flow Task 1, Source - Berkeley812_csv [1]: The "output column "Reason for Delay in Transition" (110)" failed because truncation occurred, and the truncation row disposition on "output column "Reason for Delay in Transition" (110)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component.
Error: 0xC0202092 at Data Flow Task 1, Source - Berkeley812_csv [1]: An error occurred while processing file "D:\ftproot\LocalUser\RyanDaulton\Documents\Berkeley Demographics\Berkeley812.csv" on data row 758.
14
salvationishere

または1つ以上の文字がターゲットコードページで一致しなかったエラーの一部だと思われます。

その列の値を持つ行を削除すると、ロードされますか?つまり、パッケージが失敗する原因となった行を特定できますか?データが長すぎるか、SQL Serverが気に入らないファンキーなキャラクターがある可能性があります。

10
Beth

このエラーの考えられる理由の1つは、区切り文字(コンマ、セミコロン、パイプなど)が実際にデータ内の1つの列に表示されることです。これにより、非常に誤解を招くエラーメッセージが表示される可能性があり、多くの場合、まったく異なる列の名前が使用されます。

これを確認する1つの方法は、「不良」行を別のファイルにリダイレクトし、それらを手動で検査することです。これを行う方法の簡単な説明を次に示します。

http://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx

それが本当にあなたの問題である場合、最良の解決策は、ソースでファイルを修正してデータ値を引用するか、データにない別のデリミターを使用することです。

23
Pondlife

以前にこの問題が発生したことがありますが、ファイルのデフォルトの列サイズが間違っている可能性があります。デフォルトのサイズは50文字ですが、使用しているデータは大きくなります。データファイルの詳細設定で、列サイズを50からテーブルの列サイズに調整します。

15
Nick Fedewa

これがSQL Serverインポートウィザードからのものである場合、データソースの列の定義を編集してみてください。デフォルトでは50文字ですが、もっと長くすることもできます。

Data Soruce -> Advanced -> Look at the column that goes in error -> change OutputColumnWidth to 200 and try again.

4
MaurGi

私の場合、一部の行にはヘッダーと同じ数の列がありませんでした。たとえば、ヘッダーには10列があり、行の1つには8列または9列があります。 (列=各行の区切り文字のカウント数)

2
LT.Nolo

以前にこの問題が発生しました。「データソースの選択」ページの「詳細」タブに移動し、「推奨タイプ」ボタンをクリックして、「行数」を必要なだけ設定できます。その後、修飾されたタイプとテキストが真の値に設定されます。

上記のソリューションを適用し、データをSQLに変換できます。

0
Arash Farahzadi

他のすべてのオプションが失敗した場合は、データインポートタスクや接続マネージャーを再作成してください。タスクが最初に作成されてから変更を加えた場合、これでうまくいく場合があります。私はそれが再起動に相当することを知っていますが、ちょっと、それがうまくいけば、それは動作します。

0
grichmer