-1

SQL Server では、Restore には Recovery、Unrecovery、および Standby の 3 種類のステータスがあり、「コミットされていないトランザクション」の処理方法を決定します。

しかし、復元するバックアップにコミットされていない明示的なトランザクションがまったくない場合はどうなるでしょうか?

私は、Recovery が Unrecovery とはまだ違うと確信しています。回復状態のログ バックアップを復元することはできず、回復不能状態のデータを読み取ることはできません。

しかし、SQL Server はどのようにしてそれを知るのでしょうか? 暗黙のフラグまたはバックグラウンド トランザクションはありますか?

すべてのアドバイスをありがとう。

4

1 に答える 1

0

SQL Server の復元は、次の 3 つのフェーズを経ます。

  1. データをロードする
  2. ディスクに完全に書き込まれなかったコミット済みトランザクションを再適用します。
  3. 進行中だがコミットされていないトランザクションを元に戻します。

最初の 2 つは、復元のたびに実行されます。オプションを指定した場合のみの UNDO フェーズRECOVERY。これにより、SQL Server はログ バックアップの復元をCOMMIT、1 つ以上の処理中のトランザクションを含む可能性があるこのデータベースに適用できます。

UNDO フェーズが発生した場合の情報は、以降のアクションに必要な lsn 番号とともにデータベースに保存されます。

ここで読むことができるすべての詳細については、http: //msdn.microsoft.com/en-us/library/ms191455 (v=sql.105).aspx を参照してください。

このクエリで確認できるデータベースの現在の状態:

SELECT name,state_desc FROM sys.databases;
于 2013-01-21T19:39:15.987 に答える