web-dev-qa-db-ja.com

SQL Serverでのコミットされたトランザクションのロールバック

コミットされたトランザクションをロールバックすることは可能ですか?

テーブル内のすべてのデータを削除しました。 deleteステートメントはBegin Transaction内にあり、commit transactionコマンドでトランザクションをコミットしました。今、ロールバックしてデータを取り戻すことは可能ですか?

4
user69701

いいえ。コミットされたトランザクションは、データベーステーブルの内容を最初にトランザクションログで変更し、次にデータファイルで変更します。トリガーまたはその他の手法が明示的に事前に設定されていない限り、トランザクションがコミットされる前にデータベースに格納された値を回復する方法はありません。

これを行うには、トランザクションが終了する前にデータベースのコピーを復元する必要があります。

他の手法は、トランザクションログを読み取るデータの再構築に依存していますが、お勧めしません。データベースのコピーを復元する方がはるかに簡単です(そしてサポートされています)。

3
spaghettidba

トランザクションログをトリミングしていない場合は、トリミングできます。

これを実現する方法についての素敵な記事を以下に示します。

2
VoonArt