3

SSISのデータフロータスクを使用して、フラットファイルをデータベースにインポートしています。このファイルは非常に単純です。行ごとに3つのコンマ区切りの値が含まれています。ただし、このタスクを実行するたびに、フラットファイルコンポーネントから次の警告が表示されます。

警告:0x8020200F:ファイルの最後に部分的な行があります。

この警告は、ファイルのサイズに関係なく発生するようです。ファイル内の行がほんの一握りであっても、視覚的に検証されています(拡張文字などは表示されません)。さらに、ファイルの最後に空白行があるか、末尾のCR+LFなしで終了するかは問題ではないようです。

WarnAsErrorを有効にしてパッケージを実行できるように、この警告を取り除くにはどうすればよいですか?

(ところで、他の誰かが同様の問題を抱えていたようですが、ファイルの最後に部分的な行がありますが、それほど問題ではありませんでした。)

4

3 に答える 3

5

この問題が発生した場合に試すべき3つのことを見つけました。3つのケースのうち少なくとも2つでは、SSISは入力ファイルの行を無視し、上記の警告のみを表示していました。そのため、この警告を無視することはお勧めしません。

ステップ1:フラットファイルが有効であることを確認します

このエラーは、無効な入力ファイルがある場合に表示されます。私のように、入力ファイルに数百万行あるかどうかを検出するのは特に難しい場合がありますが、SSISはこの警告を喜んで提供し、問題のある行をインポートせずに続行するため、ファイル形式の違反を発見することが重要です。場合によっては、問題のある行のの行。ソースファイルの問題を発見する最も簡単な方法は、正常にインポートされている行数を確認することです。フラットファイルで予想される数と大幅に異なる場合は、途中で問題が発生している可能性があります。

ステップ2:最後にダミーラインを試す(固定幅のみ)

固定幅形式の入力ファイルを使用している場合、Microsoftが役立つKB記事を用意している場合があります。基本的に、ファイルの最後にダミー行を追加することをお勧めします。

私は固定幅のファイルを使用していないので、この手法がどれほど役立つかはわかりません。

ステップ3:非テキストのテキスト修飾をオフにする

TextQualifiedプロパティはデフォルトでTrueであると私は信じているので、これはトリッキーなものです。入力ファイルが非テキストフィールド(整数など)を使用している場合は、それらの列がテキストとして修飾されることを期待してはならないことをSSISに通知する必要があります。基本的に、入力ファイルは完全に有効に見えても無効になります。

TextQualifiedは、Flat FileConnectionManagerの列のプロパティです。

接続マネージャー

変更するには、接続マネージャーを開き、[詳細設定]をクリックして、テキスト以外の列をクリックします。TextQualifiedプロパティがFalseに設定されていることを確認してください。テキスト以外のすべての列に対してこれを行う必要があります。

ここに画像の説明を入力してください

于 2012-06-04T21:27:28.747 に答える
1

ファイル内の行のバイト幅がわかっている場合は、ファイルの合計バイトサイズを予想される行サイズで割って、(10進数ではなく)適切な丸め行数を取得できることをいつでも再確認できます。 。

ソースから予想されるレコード数を知ることも役立ちますが、これがない場合は、ファイルのロード中に、結果のロードされたテーブルのレコード数を行数の計算と比較して少なくとも再確認できます。

このエラーは、ソースのフラットテキストファイルがファイルの最後の\ r\nにない場合によく見られます。

于 2014-03-05T19:37:17.173 に答える
1

Windows64ビットでの実行は完璧です。行の欠落はありませんでしたが、Windows2008で実行すると最後の行が失われました。

私の回避策は次のとおりです。1。Windows2008のBIDでssisを開きます。2。ファイル接続マネージャーを開き、TextQualifierが3に設定されていることを確認します。再構築します。

Windows7とWindows2008の両方ですべて正常に動作します。

于 2014-06-18T20:25:30.300 に答える