私は SQL Server 2014、標準版を持っています。データを削除し、別の主キーの下に再挿入するテーブルがいくつかあります (実際には同じであるシステム内の 2 人のレコードをマージするため)。これらすべての変更は、T-SQL トランザクションで実行されます。
トランザクションとロールバックがどのように機能するかは理解していますが、必要なのは監査/ロールバックです。これは、ユーザーが後でこのトランザクションのみをロールバックする必要がある場合があるためです (データベースまたはテーブル全体を復元する必要はありません)。私は標準版しか持っていないので、「Change Data Capture」はオプションではありません。
私の本当の問題は、この監査情報をどのように保存するかということです。これが1つの作業単位であることを追跡するために一意のキーが必要になると思います。そのため、これらのテーブルの変更はすべて、ユーザーに関する限り同じグループに関連付けられます。しかし、たとえば DELETE WHERE ID = @ID クエリがある場合、必要に応じて後で再挿入できるように、削除する前にこれらの削除済みレコードをすべて保存するにはどうすればよいでしょうか? ある種の大規模なロールバック T-SQL スクリプトを保存しても問題ありませんが、削除しようとしているデータに対して保存して後で実行できる INSERT スクリプトを生成する方法がわかりません。
私はどんなアイデアにもオープンです。必要なのは、複数のテーブルを処理するのに十分な汎用性のあるアーキテクチャと、削除と挿入をロールバックする機能だけです。きれいな監査テーブルを維持するよりも、ロールバック機能に関心があります。