完全復旧モデルまたは一括ログ復旧モデルからの切り替え

データベースは、任意の時点で別の復旧モデルに切り替えることができます。一括操作中に切り替えを行うと、一括操作のログ記録が適宜変更されます。

完全復旧モデルと一括ログ復旧モデル間の切り替えは、大規模な一括操作の前後で役に立ちます。すべてのトランザクションのログを完全に記録する完全復旧モデルは、通常の使用を目的としています。一括ログ復旧モデルは、大量の一括操作中に一時的に使用することを目的としています。つまり、一括ログ復旧モデルの影響を受ける一括操作中に行うことを想定しています (詳細については、「最小ログ記録が可能な操作」を参照してください)。一括操作中に完全復旧モデルと一括ログ復旧モデルを切り替えると、一括操作のログ記録が適宜変更されます。

制限事項

  • データベース ミラーリングなどの一部の機能では、データベースで完全復旧モデルを使用している必要があります。

  • トランザクション レプリケーションが有効な場合、SELECT INTO 操作および BULK INSERT 操作は、一括ログ復旧モデルでも完全にログ記録されます。

完全復旧と一括ログ復旧間の切り替え

完全復旧を使用するデータベースの場合、一括操作時に一括ログ復旧モデルに一時的に切り替えると、パフォーマンスが向上します。ただし、一括ログ復旧モデルでは特定の時点に復旧できません。そのため、トランザクション ログ復元を必要とするトランザクションを一括ログ復旧モデルで実行すると、データが失われる場合があります。災害復旧シナリオでデータの復元を最大限まで可能にするには、次の条件下でのみ一括ログ復旧モデルに切り替えることをお勧めします。

  • ユーザーが現在データベースで許可されていない場合。

  • 一括処理中に行われたすべての変更が、ログ バックアップを行っているかどうかに関係なく復旧可能な場合 (一括処理の再実行など)。

これら 2 つの条件を満たす場合は、一括ログ復旧モデルでバックアップされたトランザクション ログの復元中に、データが失われることはありません。

次のことをお勧めします。

  • 一括ログ復旧モデルに切り替える前に、ログをバックアップしてください。

    これは、一括ログ復旧モデルでは、データベースで障害が発生した場合に、一括操作のログをバックアップする際にデータへのアクセスが必要になるために重要です。

  • 一括操作の実行後、すぐに完全復旧モードに戻してください。

  • 一括ログ復旧モデルから完全復旧モデルに戻した後に、再度ログをバックアップしてください。

これらの推奨事項に従うことにより、データが完全に保護され、特定の時点への復旧が有効になります。次の図は、これらの推奨事項を示しています。

一括ログ復旧を使用する場合の推奨プロセス

2 つの復旧モデル間で切り替えを行う場合、バックアップ ストラテジは変更されません。つまり、データベースのバックアップ、ログ バックアップ、および差分バックアップが引き続き定期的に実行されます。

完全復旧または一括ログ復旧から単純復旧への切り替え

完全復旧または一括ログ復旧から単純復旧への切り替えは可能ですが、めったに行いません。

単純復旧モデルへの切り替えの直前にトランザクション ログをバックアップして、その時点に復旧できるようにします。単純復旧モデルでは、ログのバックアップがサポートされていません。そのため、切り替え後、トランザクション ログをバックアップするためのスケジュールが設定されたすべてのジョブを停止します。詳細については、「メンテナンス プラン ウィザードのメンテナンス タスクを変更する方法」を参照してください。

復旧モデルの変更

復旧モデルを変更するには (Transact-SQL)

次のように、ALTER DATABASE を使用します。

  • データベースを完全復旧モデルに設定するには

    USE master;

    ALTER DATABASE database_name SET RECOVERY FULL;

  • データベースを一括ログ復旧モデルに設定するには

    USE master;

    ALTER DATABASE database_name SET RECOVERY BULK_LOGGED;

注意

新しいデータベースの既定の復旧モデルを変更するには、ALTER DATABASE を使用して model データベースの復旧モデルを変更します。

復旧モデルを変更するには (SQL Server Management Studio)