読み取り専用データベースのバックアップ

このトピックでは、読み取り専用データベース、または最後にバックアップした時点で読み取り専用であったデータベースをバックアップする場合の考慮事項について説明します。

読み取り専用データベースの場合は、バックアップ中にプライマリ ファイルを更新できません。読み取り専用データベースに関するベスト プラクティスは、完全バックアップを行うことです。ただし、読み取り専用と読み取り/書き込み可能の間で切り替えるデータベースの場合は、読み取り/書き込み可能のときにデータベースをバックアップすることは理にかなっています。さらに、データベースが読み取り/書き込み可能のままである限り、変更の範囲が狭い場合は差分バックアップを実行できます。

注意

バックアップ中は、ファイル グループの IsReadOnly プロパティを変更できません。このプロパティの変更を試みると、エラーが発生し失敗します。

データベースの読み取り/書き込み権限を変更した後の部分バックアップ

読み取り専用データベースの部分バックアップには、プライマリ ファイル グループのみが含まれます。データベースを後から読み取り/書き込み可能に変更すると、部分バックアップには含まれない、読み取り/書き込みセカンダリ ファイル グループが存在することになります。このような場合に部分的な差分バックアップの実行を試みると、バックアップに失敗します。データベースの部分的な差分バックアップを実行する前に、別の部分バックアップを実行する必要があります。新しい部分バックアップには、すべての読み取り/書き込みセカンダリ ファイル グループが含まれるので、このバックアップを部分的な差分バックアップのベースにすることができます。

読み取り専用データベースの差分バックアップ

読み取り専用データベースの場合は、完全バックアップと差分バックアップを組み合わせて使用するよりも、完全バックアップを単独で使用する方が管理が容易になります。データベースが読み取り専用の場合は、ファイルに含まれるメタデータをバックアップやその他の操作で変更することはできません。このため、差分バックアップに必要な、差分バックアップを開始するログ シーケンス番号 (差分のベース LSN) などのメタデータは master データベースに格納されます。データベースが読み取り専用のときに差分ベースを作成した場合、ベース バックアップ以降に実際に発生した変更よりも多くの変更内容が差分ビットマップに示されます。backupset システム テーブルに格納されている differential_base_lsn は、ベースの作成以降にデータが実際に変更されたかどうかの判断に使用されるため、この余分なデータは読み取られますが、バックアップには書き込まれません。

読み取り専用データベースの再構築、復元、またはデタッチとアタッチが行われると、差分ベースの情報が失われます。このことは、master データベースがユーザー データベースと同期されないために発生します。SQL Server データベース エンジンで、この問題を検出または防止することはできません。以降の差分バックアップはどれも、最新の完全バックアップに基づいていないことになり、予期しない結果になる可能性があります。新しい差分ベースを確立するには、データベースの完全バックアップを作成することをお勧めします。

読み取り専用データベースで差分バックアップを使用する場合のベスト プラクティス

読み取り専用データベースの完全バックアップを作成した後、引き続き差分バックアップを作成することを予定している場合は、master データベースをバックアップします。

master データベースが失われた場合は、まず、このデータベースを復元してから、ユーザー データベースの任意の差分バックアップを復元します。

後から差分バックアップを使用する予定があり、読み取り専用データベースのデタッチとアタッチを行う場合は、可能な限り早い時点で、読み取り専用データベースと master データベースの両方の完全バックアップを実行します。