復元中、復旧待ち、またはオフライン状態のファイルの段階的な部分復元シーケンスの計画
このトピックは、SQL Server データベースの段階的な部分復旧を計画しているときに、複数のファイル グループを含むデータベース (および単純復旧モデルでは、読み取り専用ファイル グループ) のみに関連します。
復旧シーケンスに復元中、復旧待ち、またはオフライン状態のファイルが含まれている場合、ファイルのデータを復元しないで、そのファイルを復旧できることがあります。ファイルの完全バックアップを復元するか、ファイルを単純復旧できるかを判断するには、sys.database_files カタログ ビューと sys.master_files カタログ ビューに格納されているメタデータを使用できます。
再実行 LSN
最初の段階では、カタログ ビューで再実行 LSN を含む、redo_start_lsn、redo_start_fork_guid、redo_target_lsn、および redo_target_fork_guid の各列を調査します。次の表に、再実行 LSN と、その解釈方法を示します。
列 |
説明 |
---|---|
redo_start_lsn および redo_start_fork_guid |
これらの列では、ファイルの特定の時点を表すペア (lsn と guid) を示します。ファイルがロールフォワードされると、これらの列の値は変わります。ロールフォワードはこの時点から続行されます。
重要
redo_start_lsn = NULL の場合、ファイルのディスク上の状態は不明で、ファイルを完全バックアップから復元する必要があります。
|
redo_target_lsn および redo_target_fork_guid |
これらの列では、オンライン データベースとの一貫性を維持するためにファイルを復元する必要がある特定の時点 (目的の復旧ポイント) を定義するペア (lsn と guid) を示します。 |
sys.database_files または sys.master_files を使用するかどうかの判断
sys.database_files カタログ ビューと sys.master_files カタログ ビューはどちらも再実行 LSN 列を含みますが、これらのビューには常に一貫性があるとは限りません。一般に、データベースがオンラインの場合、sys.database_files の値と sys.master_files の値には一貫性があります。ただし、次の状況では値に一貫性がなくなります。
データベースが読み取り専用の場合、バックアップによる変更が生じても sys.database_files が更新されません。sys.master_files にのみ最新情報が含まれます。
注 ファイルが読み取り専用であるかどうかを調べるには、is_read_only 列と read_only_lsn 列を確認します。is_read_only はファイルが読み取り専用であるかどうかを示します。ファイルが読み取り専用の場合、read_only_lsn はファイルが読み取り専用になった時点を示します。
データベースがオフライン (たとえば、データベースが復元中) の場合、データベース カタログにアクセスできません。オフライン データベースの場合、sys.master_files を使用して情報を取得する必要があります。
復元操作が現在ファイルに影響していれば、ファイルの再実行 LSN が更新されて一貫性がなくなります。復元と復元の間のみ、再実行 LSN 列を調べてください。
上記の列について
注 |
---|
ここでは、復旧パスと復旧分岐の概念を理解していることを前提とします。詳細については、「復旧パス」を参照してください。 |
ここでの説明は、特定の時点への復旧を行った場合に、機能していない復旧パスからのバックアップがまだ存在する場合のみに関連しています。復元中、復旧待ち、またはオフライン状態のファイルを復元する場合、復旧分岐が関連します。復旧分岐を分析することで、可能性のある復旧パスを特定できます。一般に、データベースを復旧する場合、復旧パスが 1 つしかないのがベストであるのは明白です。
最適な復旧パスを特定するには、ファイルが目的の復旧分岐上にあるか、別の復旧分岐上にあるかを調べる必要があります。
ファイルが別の復旧分岐にあります。
redo_start_fork_guid != redo_target_fork_guid の場合に redo_start_fork_guid が redo_target_fork_guid の先祖でない場合、ファイルは対象となる分岐とは異なる復旧分岐にあります。
注 先祖分岐を見つけるには、ログ チェーンをさかのぼって見ていきます。詳細については、「復旧パス」を参照してください。
この場合、ファイルを完全バックアップから復元する必要があります。この復元により、データベースの現在の復旧ポイントの有効な先祖であるポイントにファイルが位置付けられます。
注 ファイルを復元するには、ファイル バックアップがデータベースの復旧ポイントの先祖である必要があります。必ず、ファイルの最新の完全バックアップを探してください。データは、目的の時点にロールフォワードする必要があります。ただし、唯一の例外として、バックアップ以前からファイルが読み取り専用になっていた場合は、そのファイルのファイル バックアップをロールフォワードする必要はありません。必要に応じて、ファイル バックアップを復元してから、ファイルの差分バックアップを復元し、存在する場合はログ バックアップも復元すれば、目的の復旧ポイントにファイルを復旧できます。
ファイルが現在の (対象となる) 復旧分岐にあるか、対象となる分岐の先祖です。
注 データベースを復旧してからファイルをバックアップした場合、そのファイルは対象となる復旧分岐にあります。
上記の 2 つの考慮事項に該当する場合、ファイルを復元する必要があるかどうかは、次の表で示すように、redo_start_lsn と redo_target_lsn の関係によって決まります。
条件
結果
redo_start_lsn =redo_target_lsn
ファイルを復元する必要はありません。
ファイルはデータベースと一貫性があり、RESTORE DATABASE database_name WITH RECOVERY を使用しなくてもオンラインにすることができます。
redo_start_lsn <redo_target_lsn
ファイルをオンラインにするには、redo_target_lsn までロールフォワードする必要があります。
redo_start_lsn >redo_target_lsn
データベースがファイルよりも古いものです。ファイルを完全バックアップから復元する必要があります (または、別の部分復元シーケンスを使用して、データベースをより後の時点に再度復元できます)。
注プライマリ ファイル グループの復旧直後に新しい復旧分岐が作成されるので、この状況はオフライン復元でのみ発生することがあります。復旧できないセカンダリ ファイル グループは、プライマリ ファイル グループと同じ復旧パスに存在しなくなります。
注 |
---|
これらの復旧パスのうち 1 つにバックアップを復旧した後は、別の復旧パスは無効になります。特定の無効な復旧パスへのバックアップは機能しなくなります。ベスト プラクティスは、機能していないバックアップを削除するか、それを無効にした上で、機能していないとマークすることです。 |