SQL Server 2016 のサーバー構成オプション (sys.configurations) を見ていて気付いたのですが、SQL Server 2014 のタイミングで「backup checksum default」というオプションが追加されたようです。
サーバー構成オプション (SQL Server) にも記載されていないみたいですね。
バックアップは取得する際に、「WITH CHECKSUM」オプションを設定することで、ページのチェックサムが正しいかを確認しながらバックアップを取得することができます。
実際には以下のような SQL となります。
BACKUP DATABASE TEST TO DISK=N'NUL' WITH CHECKSUM,CONTINUE_AFTER_ERROR
デフォルトでは、「STOP_ON_ERROR」となっているため、ページ破損が発生しているデータベースのバックアップを取得しようとした場合、エラーとなりバックアップ処理が中断しますが、「CONTINUE_AFTER_ERROR」を設定することで、破損ページが検出された場合でもバックアップを最後まで実行させることができます。
この状態で取得されたバックアップは「破損した状態のデータベースのバックアップ」となりますので、このバックアップをリストアしても破損した状態のデータベースが復元されることになりますが、破損ページ以外はリストアすることができるバックアップとなります。
SQL Server 2014 から追加された「backup checksum default」を有効にすると、「WITH CHECKSUM」をオプション指定していない場合でもデフォルトでチェックサムの確認が行われるようになります。
類似のオプションとして、バックアップ取得時の圧縮のデフォルト値を設定するための「backup compression default」がありますね。
デフォルトでは無効になっていますので、破損したページを含むデータベースのバックアップを取得した場合、CHECKSUM を明示的に追加していないと、チェックサムによる破損ページの検出は行われません。
それでは、以下の SQL を実行して設定を有効にしてみます。
EXEC sp_configure 'show advanced options', 1 RECONFIGURE WITH OVERRIDE EXEC sp_configure 'backup checksum default', 1 RECONFIGURE WITH OVERRIDE
同じクエリでバックアップを取得した結果が以下になります。
デフォルトでチェックサムの確認を行う動作となっているため、バックアップで破損ページが検出されているのが確認できますね。
SQL Server 2014 がリリースされてかなり経過しましたが、今までこのオプションが追加されたことに気づきませんでした。。。。