SQL Serverデータベースを復元するとき、3つの異なる回復状態から選択できることに気付きました。
- リカバリで復元
- 回復せずに復元
- スタンバイで復元
私はいつもデフォルト値のままにしましたが、それらはすべてどういう意味ですか?
(できれば素人の言葉で)
SQL Serverデータベースを復元するとき、3つの異なる回復状態から選択できることに気付きました。
私はいつもデフォルト値のままにしましたが、それらはすべてどういう意味ですか?
(できれば素人の言葉で)
GateKiller、
簡単に言えば(SQLBOLからのコピー&ペーストではなく)、概念を理解できるようにします。
RESTORE WITH RECOVERYは、バックアップメディアファイル(例:fulldata.bak)を使用して、バックアップファイルが作成された時点にデータベースを復元します。これは、システムを開発するときのように、データベースを以前の状態に復元するために時間を遡りたい場合に最適です。
データベースを最新のデータに復元する場合(つまり、システムのディザスタリカバリを実行していて、データを失うことができない場合など)、そのバックアップを復元してから、そのバックアップ以降に作成されたすべてのトランザクションログを復元します。これは、RESTORENORECOVERYを使用する場合です。これにより、(障害が発生している限り)障害が発生するまでのトランザクションログを復元できます。
RECOVERY WITH STANDBYは、データベースを最終日まで復元する機能ですが(上記のNORECOVERYのように)、データベースを引き続き読み取り専用で使用できるようにします。新しいトランザクションログをデータベースに適用して、データベースを最新の状態に保つことができます(スタンバイサーバー)。システムの運用に戻るためにデータベース全体を復元するのに時間がかかりすぎる場合は、これを使用します。(つまり、復元に16時間かかるマルチTBデータベースがあるが、15分ごとにトランザクションログの更新を受信できる場合)。
これはミラーサーバーに少し似ていますが、「すべての単一トランザクション」をリアルタイムでバックアップサーバーに送信する必要はありません。
Books On lineから、読んだ後はかなりはっきりしていると思います
回復不能
コミットされていないトランザクションをロールバックしないように復元操作を指示します。別のトランザクションログを適用する必要がある場合は、NORECOVERYまたはSTANDBYオプションのいずれかを指定する必要があります。NORECOVERY、RECOVERY、またはSTANDBYのいずれも指定されていない場合、RECOVERYがデフォルトです。
SQL Serverでは、データベースバックアップと複数のトランザクションログを復元する場合、または複数のRESTOREステートメントが必要な場合(たとえば、完全データベースバックアップの後に差分データベースバックアップが続く場合)、最後のRESTOREステートメントを除くすべてでWITHNORECOVERYオプションを使用する必要があります。
注NORECOVERYオプションを指定する場合、データベースはこの中間のリカバリーされていない状態では使用できません。
ファイルまたはファイルグループの復元操作で使用する場合、NORECOVERYは、復元操作後にデータベースを復元状態のままにすることを強制します。これは、次のいずれかの状況で役立ちます。
復元スクリプトが実行されており、ログは常に適用されています。
一連のファイル復元が使用され、データベースは2つの復元操作間で使用できるようには意図されていません。
回復
コミットされていないトランザクションをロールバックするように復元操作を指示します。リカバリプロセスが完了すると、データベースを使用できるようになります。
後続のRESTORE操作(RESTORE LOG、または差分からのRESTORE DATABASE)が計画されている場合は、代わりにNORECOVERYまたはSTANDBYを指定する必要があります。
NORECOVERY、RECOVERY、またはSTANDBYのいずれも指定されていない場合、RECOVERYがデフォルトです。以前のバージョンのSQLServerからバックアップセットを復元する場合、データベースのアップグレードが必要になる場合があります。このアップグレードは、WITHRECOVERYが指定されている場合に自動的に実行されます。詳細については、トランザクションログのバックアップを参照してください。
STANDBY = undo_file_name
回復効果を元に戻すことができるように、元に戻すファイル名を指定します。UNDOファイルに必要なサイズは、コミットされていないトランザクションから生じるUNDOアクションの量によって異なります。NORECOVERY、RECOVERY、またはSTANDBYのいずれも指定されていない場合、RECOVERYがデフォルトです。
STANDBYを使用すると、トランザクションログの復元間の読み取り専用アクセス用にデータベースを起動でき、ウォームスタンバイサーバーの状況またはログの復元の間にデータベースを検査するのに役立つ特別な復旧状況のいずれかで使用できます。
指定されたUNDOファイル名が存在しない場合、SQLServerがそれを作成します。ファイルが存在する場合、SQLServerはそのファイルを上書きします。
同じデータベースの連続したリストアに同じUNDOファイルを使用できます。詳細については、スタンバイサーバーの使用を参照してください。
重要指定したUNDOファイル名を含むドライブの空きディスク容量がなくなると、復元操作は停止します。
データベースのアップグレードが必要な場合、STANDBYは許可されません。