特定の時点まで復元する方法 (Transact-SQL)

このトピックでは、特定の時点まで復元する方法について説明します。

特定の時点まで復元するには

  1. NORECOVERY オプションを指定した RESTORE DATABASE ステートメントを実行します。

    注意

    部分復元シーケンスで FILESTREAM ファイル グループを除外した場合、特定の時点への復元はサポートされません。復元シーケンスを強制的に実行して続行することもできます。ただし、RESTORE ステートメントから除外された FILESTREAM ファイル グループは復元できません。特定の時点への復元を強制的に実行するには、STOPAT、STOPATMARK、または STOPBEFOREMARK オプションに CONTINUE_AFTER_ERROR オプションを組み合わせて指定します。これらのオプションは、後続の RESTORE LOG ステートメントでも指定する必要があります。CONTINUE_AFTER_ERROR を指定した場合、部分復元シーケンスは正常に実行されますが、FILESTREAM ファイル グループは復元できなくなります。

  2. RESTORE LOG ステートメントを実行して、各ログ バックアップを適用します。その際には、次の指定を行います。

    • トランザクション ログが適用されるデータベースの名前。

    • 適用するトランザクション ログのバックアップが格納されているバックアップ デバイス。

    • RECOVERY オプションと STOPAT オプション。トランザクション ログ バックアップに、要求した時点の情報が格納されていない場合、たとえば、指定した日時がトランザクション ログに記録されている時点より後の場合などに、警告が生成されます。この場合、データベースは復旧されません。

使用例

次の例では、データベースを April 15, 202012:00 AM の状態に復元し、複数のログ バックアップが関連する復元操作を行います。バックアップ デバイス AdventureWorks2008R2Backups において、復元するデータベース全体のバックアップはデバイス上の 3 番目のバックアップ セット (FILE = 3)、最初のログ バックアップは 4 番目のバックアップ セット (FILE = 4)、2 番目のログ バックアップは 5 番目のバックアップ セット (FILE = 5) です。

重要な注意事項重要

AdventureWorks2008R2 データベースは、単純復旧モデルを使用しています。ただし、ログ バックアップを可能にするために、データベースの完全バックアップを行う前に、ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL を使用して、データベースが完全復旧モデルを使用するように設定されています。

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=3, NORECOVERY;

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2008R2 WITH RECOVERY; 
GO

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=3, NORECOVERY;

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2008R2 WITH RECOVERY; 
GO