完全バックアップとコピーのみのバックアップの主な違いは、LSN(ログシーケンス番号)であるかどうか、特にDatabaseBackupLSN
更新されるかどうかです。
完全バックアップを作成すると、DatabaseBackupLSN
が更新されます。完全バックアップを取得した後、差分バックアップを取得した場合、そのバックアップにはDatabaseBackupLSN
完全バックアップと一致するため、SQLは2つをリンクできます(たとえば、LSNからdiffが完全に続いたことを認識します)。
問題は、バックアップの実行をスケジュールしている場合に発生するため、最初に完全バックアップを作成してから、一連の差分を作成します。フルバックアップを手動で取得すると、LSNが更新され、その後、スケジュールバックアップを介して取得する各差分バックアップは、元のLSNではなく、その新しいLSNを参照します。復元する必要がある場合、スケジュールされた完全バックアップを復元できますが、手動ジョブの後に取得した差分バックアップのいずれかを復元しようとすると、LSNが一致しなくなるため失敗します。
コピーのみのバックアップでは、に触れDatabaseBackupLSN
ないため、バックアップのチェーンが壊れることはありません。
この問題の良い説明と、Michael K. Campbellによる「Breaking the Backup Chain – REDUX(またはEating Crow)」で非常に多くの人々がそれを誤解する理由があります。
4つの異なるLSNとそれらの使用方法の適切な説明については、Simon Liewによる「バックアップのSQL Serverログシーケンス番号について」を参照してください。
この問題を回避する方法は、データベースの標準バックアップを行うことを1つだけにすることです。アドホックまたはセカンダリバックアップは、コピーのみのオプションで実行する必要があります。詳細については、コピーのみのバックアップ(SQL Server)を参照してください。ただし、基本的WITH COPY_ONLY
に、コマンドで指定するT-SQLを介して、SSMSの「コピーのみのバックアップ」オプションを使用します、またはPowerShellで-CopyOnly
パラメーターを使用します。