2009-05-28 15 views
0

SSISが大きなデータセットを持つトランザクションをどのように処理するのか疑問に思っています。私はステージング・データベースからライブ・データベースへのETLの一部としてビジネス・ルールに対して検証される必要がある約150,000行の「大規模な」データ・セットを持っています。SSISトランザクション - 大きなレコードセット

レコードのいずれかがビジネスルールに失敗した場合、レコードはライブデータベースには格納されません(つまり、トランザクションをロールバックする)。

私の質問は、SSISがどのように大規模なトランザクションを処理するかです。それは149,999レコードを入力して処理し、最後のレコードがそのバスのルールに合格しなかった場合は、全ロットを戻しますか?または、このタイプの大規模なデータ転送操作を実行するためのベストプラクティスがありますか?

私の現在の考えは、コンテナで転写設定を有効にして、制御フローレベルでシーケンスコンテナ内の各レコードを処理することです。すべての検証はシーケンスコンテナ内で行われ、挿入はこのコンテナでも行われます。

答えて

2

SSISはトランザクションを合理的に処理できます。 MSDTCを使用している複数のDBまたはサーバーに対してトランザクションが発生している(まだ動作しますが、いくつかの注意点があります)。

データフロータスクのTransactionOptionを必須に設定できます。これにより、SSISはトランザクションにSSISを登録します。同様に、他のタスクのTransactionOptionをNotSupportedにすることもできます(たとえば、失敗した場合は更新ステータステーブルが失敗します)。

シーケンスコンテナ内の各レコードを実際に処理することはできません(データフロータスクを複数回ループオーバーしない限り、おそらく最良の方法ではありません)。代わりに、データフローを必要なトランザクションオプションに入れて、データフローでレコードが失われてトランザクション全体がロールバックされた場合は、そのタスクに失敗するはずです。

0

私はDane、SSISに同意します。これをサポートする適切なインフラストラクチャがあれば、SQLサーバーはこの量のトランザクションに問題はありません。

関連する問題