당신은 엉망으로 필요하지 않습니다 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
같이 순서대로 Diff를 복원 할 수 있습니다 .
/*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'
그리고 그 성가신 로그 파일과 달리 Diff를 복원 할 때도 건너 뛸 수 있습니다.
/*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
도움이 되었기를 바랍니다!!