SQLサーバーでのトランザクションロールバックのメカニズムは何ですか?
4592 次
3 に答える
3
その方法に関しては、トランザクション内のすべてのデータ変更はトランザクション ログ内に保存され、ロールバックが必要な場合に備えて、元に戻すレコード用に追加のスペースもログに予約されます。各トランザクション ログには、変更を元に戻すのに十分な情報が含まれているため、必要に応じて変更を元に戻すことができます。(DR シナリオでそれらを再生するだけでなく)
単純な削除操作を例にとると (ログの内容の例としてここでデコードしたため)、削除されるレコードは LOP_DELETE_ROWS のトランザクション ログ エントリ内に格納されます。行全体がログ エントリ内にあることを示します。
トランザクションがロールバックされる場合、ログに予約されている取り消し領域が使用され、行が再挿入されます。領域の予約を元に戻す理由は、トランザクション ログがトランザクションの途中でいっぱいにならず、完了またはロールバックする領域が残らないようにするためです。
于 2010-02-21T13:13:13.967 に答える
3
ROLLBACK TRANSACTION (Transact-SQL)をご覧ください。
明示的または暗黙的なトランザクションを、トランザクションの先頭またはトランザクション内のセーブポイントまでロールバックします。
于 2010-02-21T08:11:15.427 に答える