2009-07-01 19 views
1

私のSSISプログラムは.csvファイルから入力として読み込みます。SSISフラットファイルからの読み込みに問題があります

ファイルには約60,000行があります。私のSSISパッケージは読み込み中に失敗し、潜在的なデータ損失のために特定の列を変換できないと言っています。

ここで、大部分の行が正しいことは確かです。私はファイルのランダムなサブセットを貼り付けてみましたので、SSISはうまく読み込みます。

しかし、パッケージが失敗した行を正確に特定する方法を見つけられません。

私はこの問題に2ヶ月かかりましたか?

答えて

5

最初の犯人は16回繰り返すことができます。ここでは脳+筋肉の方法です:

まず:すべてをバックアップします。安全な場所にバックアップのコピーを作成します。申し訳ありませんが、明白に述べているが、私は最近噛んだし、私はを知っている。

60Kレコードのファイルです。これをベースファイルとします。 2つのファイルに

  1. スプリットベースファイル(FILEA、FILEB)
  2. 使用入力としてそのうちの一つ。
  3. ランSSIS - SSISが失敗した場合、あなたのベースファイルとして使用FILEAを - 他には、ベースファイルとしてFILEBを使用
  4. ゴー1

に進むあなたは16の繰り返しで、問題のレコードを持っています。 (60k、30k、15k、7500,3750,1875,937,468,234,117,58,29,14,7,3,1)

すべてをログオンし、SSISパッケージを再実行します。ベースファイルに違反しているレコードとログに正確なデータポイントがあるはずです。

0

まず、問題を単純化してください。このフラットファイルソースとダミー宛先を使用するデータフロータスクを作成します。失敗を見る。

ログをすべてオンにし、ログを参照します。あなたが明らかに価値のないロギング領域をオフにして、再度実行してください。

また、送信元と送信先のどちらかのエラー出力を構成する必要があります。誤った行を、実行後に見ることができる別の宛先に送信します。

0

これを実行したときのほとんどの場合、期待されていたより長いデータ(60文字の文字列をvarchar(50)フィールドに収めようとしたもの)の結果であったか、精度が失われる可能性があります(つまり、26.5を整数フィールドにフィッティングするか、26.55を小数点以下1桁しか許容しない数値フィールドにフィッティングさせます)。

0

セットDefaultBufferMaxRows = 1

これを読み出して各ライン一つずつを処理し、それを用いて変換の問題を有するということ行に失敗するであろう。

ファイルを分割して手動で行う必要はありません。

関連する問題