システムで見つかった2人の人物を同じ名前でマージするかなり大きなストアドプロシージャがあります。これは、多くの異なるテーブル(約10程度、非常に異なるテーブルすべて)の削除と更新を行います。すべてがトランザクションにラップされ、失敗した場合はロールバックされます。これは間違った質問かもしれませんが、何か起こったことを正確に追跡する多くの "履歴"テーブルを作成したり挿入したりすることなく、この特定のトランザクションだけを保存してロールバックすることは可能ですか?私は、データベース全体、ストアドプロシージャ固有のトランザクションの結果、および後で復元する必要はありません。特定の古いSQLトランザクションをロールバックする
答えて
Change Data Captureを調査しているようです。
データが変更されてもキャプチャされますが、1回の実行または非常に少量のデータに対してのみデータをキャプチャしている場合は、他の方法が有効です。
ありがとう、間違いなくこれを読むつもりです。一見したがっているように聞こえて、これが特徴であることは知らなかった...。 :) – Andy
トランザクションがコミットされると、後でそのトランザクションだけをロールバックすることはできません。あなたはかなり文字通りの意味で「約束」しています。あなたは明らかにバックアップから復元し、特定の時点からすべてのトランザクションをロールバックすることができますが、それはおそらくあなたが探しているものではありません。
監査テーブルを作成することは、あなたの唯一の選択肢です。別の回答が示すように、データ変更のキャプチャを使用することもできますが、エンタープライズ版の大きな資金を使い切っていない限り、これはオプションではありません。しかし、この特定のタイプの変更を取り消すことに興味があるのであれば、再分割して実際の分割を行うために必要なデータレコードを格納するマージを行うコードをプロシージャに追加するのが最も簡単でしょう。しかし、スプリットを実行する能力を損なう可能性のある「マージされた」データへの変更を処理する必要があることに注意する必要があります。これは、SQLが自動的にあなたのためにそれを行うことができない理由です...元のトランザクションの後に発生する可能性のあるデータの変更をどのように処理したいか分かりません。
私はスタンダード版しか持っていないようですので、CDCは私にとってはうまくいかないでしょう。面白いことではありませんが、現時点で監査テーブルは私の唯一の選択肢です。私は、各テーブルのスキーマコピーを後で元に戻す変更...またはテーブル、キー、フィールド、古い/新しい値、および実行された操作を保持するテーブルから削除/更新することを検討しています。いずれにしても、私はCDCについて学びました。エンタープライズエディションとチェンジトラッキングのためだけであり、それが私にとってはうまくいかないのです。 – Andy
- 1. SQLトランザクションのロールバックとコミット
- 2. asp.netとSQL Server +トランザクションのロールバック
- 3. トランザクションをロールバックする
- 4. JTAトランザクションのロールバック
- 5. @トランザクションが春にトランザクションをロールバックしない
- 6. MyBatisのトランザクションのロールバック
- 7. @トランザクションがロールバックされない
- 8. Spring @トランザクションがロールバックしない
- 9. ロールバックするSQL Server 2012トランザクションを取得できません
- 10. SQL Serverでトランザクションをロールバックまたはコミットする方法
- 11. SQLロールバック・トランザクションでは、そこから状態をロールバックしますか?
- 12. Springトランザクション失敗ロールバック
- 13. 複数のトランザクションをロールバックする
- 14. トランザクションをロールバックしないJmsメッセージドリブンチャネルのadaper
- 15. @Testの後のトランザクションのロールバック
- 16. トリガーからのトランザクションのロールバック
- 17. 春/ MyBatisのトランザクションのロールバック
- 18. APIテスト+トランザクションのロールバック - 春ブーツ
- 19. データトランザクションのdbトランザクション(コミットとロールバック)
- 20. ストアドプロシージャ(ロック/ロールバック)のmysqlトランザクション
- 21. データのKenticoトランザクションとロールバック
- 22. SQL ServerトランザクションのロールバックまたはPetapocoを使用したコミット?
- 23. Payaraでトランザクションを静かにロールバックする
- 24. ssisでトランザクションをロールバックする方法は?
- 25. Django transaction.commit_on_successがトランザクションをロールバックしない
- 26. SQL Server - トランザクションはエラーでロールバックされますか?
- 27. デベロップメント中に一定量のトランザクションをロールバックしますか?
- 28. .NET + SQL Server 2005 - トランザクションをロールバックする方法ログを保持する方法
- 29. トランザクションを使用せずにSQL Serverテーブルの更新データをロールバックする
- 30. ロールバックが機能しないcoldfusionトランザクション
テーブル全体を復元することは望ましくないことに注意してください。トランザクションの影響を受けたレコードだけです。 – Andy