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

適用対象: SQL Server

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

Note

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

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

SQL Server でサポートされているチェックサムは、ページ チェックサム、ログ ブロック チェックサム、およびバックアップ チェックサムの 3 種類です。 バックアップ チェックサムの生成時には、データベースから読み取ったデータについて、データベース内に存在するチェックサムや破損ページ情報との整合性が BACKUP によって検証されます。

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

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

BACKUP を実行してもディスク上の元のページおよびページの内容は変更されません。

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

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

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

    Note

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

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

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

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

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

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

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

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

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

  3. バックアップ セットに対し、この種類のエラーが存在するというマークを ( msdb.backupsetis_damaged列に) 付けます。 詳しくは「backupset (Transact-SQL)」をご覧ください。

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

Related Tasks

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

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

参照

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