7

私は非常に単純な SSIS パッケージを持っています。データのインポートとその後の SQL タスクの実行だけです。パッケージの一部が失敗した場合はすべてをロールバックしたいので、これらのタスクをシーケンス コンテナー内に配置し、シーケンス コンテナーの TransactionOption プロパティを「Required」に設定し、FailPackageonFailure プロパティを「True」に設定します。これは、ローカル データベースをターゲットにしているときにうまくいきました。ただし、OLE DB 接続をリモート サーバーに変更しようとすると、前述のプロパティ設定が原因でパッケージがハングし、最終的に「接続を取得できませんでした」というメッセージが表示されて失敗します。この問題に関する同様の説明を Web で見たことがありますが、常に接続を確認することをお勧めします。ただし、TransactionOption プロパティをデフォルトの「

なぜこれが起こるのか誰にも分かりますか?接続しようとしているサーバーのさまざまな設定と関係があると思います。また、パッケージの一部が失敗した場合に完全なロールバックを保証する別の方法を知っている人はいますか?

読んでくれてありがとう

4

2 に答える 2

0

別のオプション:

OLE DB 接続の RetainSameConnection プロパティを利用すると、分散トランザクション コーディネーター (DTC) を使用しなくても、複数のタスクにわたって SSIS で通常の SQL Server トランザクションを実行できます。この記事では、 Jamie Thomson がその方法を示します。

つまり、1 つの SQL 実行タスクで BEGIN TRANSACTION を実行してから、別の実行タスクで COMMIT または ROLLBACK を選択できるということです。

于 2013-12-19T04:22:41.360 に答える