2016-09-06 9 views
0

SSISパッケージを使用して、ファイル内のデータをテーブルに挿入しようとしていますが、ファイル内のすべてのデータが良好な場合のみです。私は周りを読んで、条件付き分割で良いデータと悪いデータを分けることができることに気付きました。SSISはすべての行が良好な場合にのみファイルをロードしようとしています

しかし、悪いデータ行がある場合は、良いデータを書き込む方法を考え出すことができません。

私の問題は、ステージングテーブルを使用して解決できます。 SSISパッケージ内でTSQLをロードして変換するよりも、より洗練された方法がないのかどうか尋ねると思っていました。

Package Image

おかげ

答えて

0

SSISの方法は、トランザクション内のアクションを包むことができます。あなたの仕事によれば、データフローの不良行を数え、少なくとも1つの不良行がある場合は何もしません。すなわち、ロールバックします。
以下は、私がPure SSISでやる方法です。シーケンスを作成してTransactionOption = Requiredを指定し、データフローをシーケンスに移動します。カウント行を悪い行のデータフローに変換し、その結果を変数に格納します。シーケンス内のDataFlowの後に、bad_rowcount変数> 0かどうかをチェックする条件付きタスクリンクを作成し、トランザクションをロールバックするエラーを発生させる小さなスクリプトタスクを実行します。
純正SSIS - はい!ステージングテーブルを使用するよりも簡単です。

+0

ありがとう私はステージングテーブルに行くと思っています。それが問題になるかどうかは確かではありませんが、この特定のテーブルで長い取引をしたいとは思っていません。 –

関連する問題