特定の時点まで復元する方法 (Transact-SQL)
このトピックでは、特定の時点まで復元する方法について説明します。
特定の時点まで復元するには
NORECOVERY オプションを指定した RESTORE DATABASE ステートメントを実行します。
注 部分復元シーケンスで FILESTREAM ファイル グループを除外した場合、特定の時点への復元はサポートされません。復元シーケンスを強制的に実行して続行することもできます。ただし、RESTORE ステートメントから除外された FILESTREAM ファイル グループは復元できません。特定の時点への復元を強制的に実行するには、STOPAT、STOPATMARK、または STOPBEFOREMARK オプションに CONTINUE_AFTER_ERROR オプションを組み合わせて指定します。これらのオプションは、後続の RESTORE LOG ステートメントでも指定する必要があります。CONTINUE_AFTER_ERROR を指定した場合、部分復元シーケンスは正常に実行されますが、FILESTREAM ファイル グループは復元できなくなります。
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