バックアップと復元中に発生する可能性のあるメディアエラー(SQL Server)

適用対象:SQL Server

SQL Server では、エラーが検出されてもデータベースを復旧するオプションを選択できるようになりました。 エラー検出の重要なメカニズムとして、バックアップ チェックサムを任意で作成できるようになりました。バックアップ チェックサムは、バックアップ操作で生成して、復元操作で検証できます。 操作中にエラーを検出するかどうかと、エラー発生時に操作を停止するか続行するかを制御できます。 バックアップにバックアップ チェックサムが含まれている場合、 RESTORE ステートメントと RESTORERESTORE VERIFYONLY ステートメントでエラーを確認できます。

ミラー化バックアップでは、メディア セットのコピー (ミラー) が最大で 4 つ作成され、メディアの破損によるエラーから復旧するために使用する代替コピーが提供されます。 詳細については、「ミラー化バックアップ メディア セット (SQL Server)」を参照してください。

バックアップチェックサム

SQL Server でサポートされているチェックサムは、ページ チェックサム、ログ ブロック チェックサム、およびバックアップ チェックサムの 3 種類です。 バックアップ チェックサムを生成するときに、 BACKUP は、データベースから読み取られたデータが、データベースに存在するチェックサムまたは破損ページの兆候と一致していることを確認します。

BACKUP ステートメントは、必要に応じてバックアップ ストリームのバックアップ チェックサムを計算します。ページ チェックサムまたは破損ページ情報が特定のページに存在する場合、ページのバックアップ時に、ページのチェックサムと破損ページの状態とページ ID も検証BACKUP。 バックアップ チェックサムを作成しても、バックアップ操作によってページにチェックサムが追加されることはありません。 ページはデータベースに存在するままの状態でバックアップされます。バックアップでページは変更されません。

バックアップ チェックサムを使用すると、検証および生成の際のオーバーヘッドによって、パフォーマンスに影響を及ぼす可能性があります。 影響はワークロードおよびバックアップ スループットの両方に及ぶ場合があります。 このため、バックアップ チェックサムの使用は任意です。 バックアップ時にチェックサムを生成する場合は、システムで進行中のワークロードへの影響だけでなく、発生する CPU オーバーヘッドも注意深く監視してください。

BACKUP では、ディスク上のソース ページやページの内容は変更されません。

バックアップ チェックサムを有効にすると、バックアップ操作では、次の手順が実行されます。

  1. ページをバックアップ メディアに書き込む前に、ページ レベルの情報が検証されます (ページ チェックサムまたは破損ページ検出のいずれかが存在する場合)。 いずれの情報も存在しない場合は、ページを検証できません。 未検証のページはそのまま書き込まれ、内容が全体のバックアップ チェックサムに追加されます。

    検証中にページ エラーが検出された場合、バックアップは失敗します。

    ページ チェックサムと破損ページ検出の詳細については、 ALTER DATABASE ステートメントの PAGE_VERIFY オプションを参照してください。 詳細については、「 ALTER DATABASE SET オプション (Transact-SQL)」を参照してください。

  2. ページ チェックサムが存在するかどうかに関係なく、 BACKUP はバックアップ ストリーム用に個別のバックアップ チェックサムを生成します。 復元操作でバックアップ チェックサムを使用し、バックアップが破損していないかどうかを検証することもできます。 バックアップ チェックサムは、データベース ページにではなくバックアップ メディアに格納されます。 バックアップ チェックサムは、復元時に使用することもできます。

  3. バックアップ セットは ( msdb..backupsethas_backup_checksums列に) バックアップ チェックサムがあるものとしてフラグが付けられます。 詳しくは「backupset (Transact-SQL)」をご覧ください。

復元操作中にバックアップ チェックサムがバックアップ メディアに存在する場合、既定では、 RESTORE ステートメントと RESTORERESTORE VERIFYONLY ステートメントの両方でバックアップ チェックサムとページ チェックサムが検証されます。 バックアップ チェックサムがない場合、いずれの復元操作も検証が行われずに続行されます。これは、バックアップ チェックサムがないと、ページ チェックサムの検証を確実に実行できないためです。

バックアップまたは復元操作中のページ チェックサム エラーへの応答

既定では、ページ チェックサム エラーが発生した後、 BACKUP または RESTORE 操作が失敗し、 RESTORERESTORE VERIFYONLY 操作が続行されます。 ただし、エラー発生時に特定の操作を失敗させるか、できる限り続行させるかを制御できます。

エラーが発生した後も BACKUP 操作が続行された場合、操作は次の手順を実行します。

  1. バックアップ メディア上のバックアップ セットに対し、エラーが存在するというフラグを設定し、 msdb データベースの suspect_pages テーブルでそのページを追跡します。 詳細については、「suspect_pages (Transact-SQL)」を参照してください。

  2. SQL Server エラー ログにエラーを記録します。

  3. バックアップ セットを、この種類のエラーを含むものとしてマークします (is_damaged 列の msdb..backupset)。 詳しくは「backupset (Transact-SQL)」をご覧ください。

  4. 正常にバックアップが生成されたがページ エラーが含まれていることを示すメッセージを表示します。

関連タスク

バックアップ チェックサムを有効または無効にするには

バックアップ操作中のエラーへの応答を制御するには

関連項目

ALTER DATABASE (Transact-SQL)
BACKUP (Transact-SQL)
backupset (Transact-SQL)
ミラー化バックアップ メディア セット (SQL Server)
RESTORE (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)