2017-09-21 18 views
0

SSISパッケージを使用してデータを毎日更新しています。次のようにパッケージのロジックは、SSIS-ロールバック削除コマンド

  1. は、宛先表に宛先表のすべての行
  2. を挿入し、完全な新しいデータを削除します。

私は私の挿入が失敗した場合、削除ロールバックする方法を見つけるためにしようとしています。私は以下のようにSSISパッケージのトランザクションを使用してみました:

enter image description here

しかし、削除SQLタスクが実行された後に、今、私のパッケージには、長い時間のために立ち往生になり、応答しません。 enter image description here

これを行うための推奨方法は何ですか?

ご迷惑をおかけして申し訳ありません。

答えて

1

あり、いくつかのより複雑なアイデアを含め、ここで考慮すべきかなりの数の技法がありますが、我々は単純なものを見ている場合は、でしょう、あなたは別の名前が、同じ構造を持つテーブルに挿入することができ、それが動作する場合にのみ、あなたは何とかそれを交換します。これを行う1つの方法は、テーブルへのアクセスにビューを使用し、成功した場合にビューを変更して、挿入したばかりのテーブルを使用することです。

これは最もエレガントな方法ではないかもしれませんが、それは考慮すべきより簡単な方法の1つです。

+1

ビューを使用するのではなく、sp_renameを使用してテーブルの名前を変更することをお勧めします。これは簡単にスクリプト可能です。 –

0

変更「必要」にパッケージのトランザクションオプションのプロパティのデフォルトと各オブジェクトはプロパティがデフォルトである「サポート」に設定していることがあることを確認してください。

また、あなたは自分のSQL実行タスクとデータフローの周りのシーケンスコンテナと同じことをやって、トランザクションを最小限に抑えることができます。

私は仕事で写真が見えないので、あなたのパッケージがどのように見えるのか分かりません。

+0

OPが念頭に置いているだけでなく、2つ以上のタスクがあります。彼が必要とするものを達成するためには、パッケージには「必須」を、削除および挿入タスクには「サポート」を、他のすべてのタスクには「NotSupported」を設定するか、言い換えれば問題の2つのタスクをコンテナコンテナのトランザクションオプションを 'Required'に設定します(もちろん、デフォルト設定である内部タスクに対してもサポートされています) – PacoDePaco

+0

@keithL申し訳ありませんが、間違ったスクリーンショットが添付されていたことに気付きませんでした。私のパッケージにはすでにTransacrtion =が必要です。しかし、それから、私のパッケージは私の削除ステップのために立ち往生してしまいます。いくつかの挿入または更新ステップで削除ステップを変更すると、トランザクションは完全に機能します – Unnie

+0

私の削除ステップとDFTステップにトランザクションが「サポート対象」に設定されています – Unnie

関連する問題