あなたが混乱する必要はありませんRECOVERY
し、NORECOVERY
あなたが必要とするすべては、ここではSTANDBY
オプション。使用方法の簡単なデモを次に示します。
データベースを作成し、シンプルリカバリに設定して、テーブルを作成します。
データを挿入し、いくつかの差分を取ります。
楽しいでしょ?
USE master;
/*Create a dummy database*/
CREATE DATABASE DiffRestoreTest
/*We simple now*/
ALTER DATABASE DiffRestoreTest SET RECOVERY SIMPLE
/*Context is everything*/
USE DiffRestoreTest
/*If nothing changes, do we even need a diff backup?*/
CREATE TABLE dbo.t1 (Id INT)
/*Take a full backup, dummy*/
BACKUP DATABASE DiffRestoreTest
TO DISK = 'F:\Backup\DRT_FULL.bak'
WITH INIT, FORMAT, COMPRESSION
/*Make a change*/
INSERT dbo.t1 (Id )
VALUES ( 1 )
/*Take a differential backup*/
BACKUP DATABASE DiffRestoreTest
TO DISK = 'F:\Backup\DRT_DIFF_1.bak'
WITH INIT, FORMAT, COMPRESSION, DIFFERENTIAL
/*Make another change*/
INSERT dbo.t1 (Id )
VALUES ( 2 )
/*Take another diff backup*/
BACKUP DATABASE DiffRestoreTest
TO DISK = 'F:\Backup\DRT_DIFF_2.bak'
WITH INIT, FORMAT, COMPRESSION, DIFFERENTIAL
/*Make another change*/
INSERT dbo.t1 (Id )
VALUES ( 3 )
/*Take another diff backup*/
BACKUP DATABASE DiffRestoreTest
TO DISK = 'F:\Backup\DRT_DIFF_3.bak'
WITH INIT, FORMAT, COMPRESSION, DIFFERENTIAL
うん、嘘をついた。それは退屈な部分です。
次の場所でフルバックアップを復元できますSTANDBY
。
/*Exit stage left*/
USE master
/*Restore the full backup*/
RESTORE DATABASE DiffRestoreTest
FROM DISK = 'F:\Backup\DRT_FULL.bak'
WITH REPLACE, STANDBY = 'F:\Backup\DRT_STANDBY.tuf'
差分を次の順序で復元できますSTANDBY
。
/*Square one*/
RESTORE DATABASE DiffRestoreTest
FROM DISK = 'F:\Backup\DRT_DIFF_1.bak'
WITH STANDBY = 'F:\Backup\DRT_STANDBY.tuf'
/*Square 2*/
RESTORE DATABASE DiffRestoreTest
FROM DISK = 'F:\Backup\DRT_DIFF_2.bak'
WITH STANDBY = 'F:\Backup\DRT_STANDBY.tuf'
/*Square 3*/
RESTORE DATABASE DiffRestoreTest
FROM DISK = 'F:\Backup\DRT_DIFF_3.bak'
WITH STANDBY = 'F:\Backup\DRT_STANDBY.tuf'
また、これらの厄介なログファイルとは異なり、差分を復元するときに先にスキップすることもできます。
/*Restore the full backup*/
RESTORE DATABASE DiffRestoreTest
FROM DISK = 'F:\Backup\DRT_FULL.bak'
WITH REPLACE, STANDBY = 'F:\Backup\DRT_STANDBY.tuf'
/*What happens if I try to jump the restores?*/
RESTORE DATABASE DiffRestoreTest
FROM DISK = 'F:\Backup\DRT_DIFF_3.bak'
WITH STANDBY = 'F:\Backup\DRT_STANDBY.tuf'
読みやすさをテストする場合は、復元コマンドの間にこれを実行するだけです。各IDが増加するのを見るはずです。そうしないと、ひどく間違ったことをしたことになります。
ファイルを復元すると、エンドユーザーがデータベースから追い出され、クエリの完了を待たないことに注意してください。
これにより、データベースは読み取り専用状態のままになり、ここでは変更できません。
SELECT *
FROM DiffRestoreTest.dbo.t1 AS t
そして最後に、自分の後片付けをしてください。
/*Bring'er online, lad*/
RESTORE DATABASE DiffRestoreTest WITH RECOVERY
DROP DATABASE DiffRestoreTest
お役に立てれば!!