티스토리 뷰
-- 시나리오
전체백업 + 전체백업 with copy_only + 로그백업 + 로그백업 with copy_only + 로그백업 with copy_only
백업파일이 존재한다.
여기서 복원시
전체백업 with copy_only + 마지막 로그백업 with copy_only 까지 전체복원이 되는가?
결론 : 잘된다. [로그백업 with copy_only] 이후의 로그백업을 순차적으로 복원하면 가능하다.
with copy_only는 이전 정상백업과 연관이 되어 있으며 차등백업과 같은 변경점은 바로 직전의
로그백업 또는 전체백업 이후 변경점부터 모두 백업하게 된다.
use master
GO
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BACKUPTEST')
DROP DATABASE BACKUPTEST
GO
CREATE DATABASE BACKUPTEST
GO
USE BACKUPTEST
GO
--drop table TBL
IF OBJECT_ID('dbo.TBL') IS NOT NULL
drop table TBL
GO
CREATE TABLE TBL(COL1 VARCHAR(50))
GO
INSERT INTO TBL VALUES('백업전')
BACKUP DATABASE BACKUPTEST TO DISK='E:\LAB\D___FUL1.BAK'
INSERT INTO TBL VALUES('카피백업전')
BACKUP DATABASE BACKUPTEST TO DISK='E:\LAB\D__COPY_FUL2.BAK' with copy_only
INSERT INTO TBL VALUES('로그백업전1')
BACKUP LOG BACKUPTEST TO DISK='E:\LAB\D___TRN1.TRN'
INSERT INTO TBL VALUES('로그카피백업전2')
BACKUP LOG BACKUPTEST TO DISK='E:\LAB\D___COPY_TRN2.TRN' with copy_only
INSERT INTO TBL VALUES('로그카피백업전3')
BACKUP LOG BACKUPTEST TO DISK='E:\LAB\D___COPY_TRN3.TRN' with copy_only
select * from tbl
백업전
카피백업전
로그백업전1
로그카피백업전2
로그카피백업전3
-- 복원해보자
use master
go
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BACKUPTEST_BAK')
DROP DATABASE BACKUPTEST_BAK
GO
-- 전체백업 with copy_only
RESTORE DATABASE BACKUPTEST_BAK FROM DISK = N'E:\LAB\D__COPY_FUL2.BAK' WITH FILE = 1,
MOVE N'BACKUPTEST' TO N'E:\SQLDATA\BACKUPTEST_BAK.mdf',
MOVE N'BACKUPTEST_log' TO N'E:\SQLDATA\BACKUPTEST_BAK_log.ldf', NOUNLOAD, STATS = 5
, NORECOVERY
GO
RESTORE LOG [BACKUPTEST_BAK] FROM DISK = N'E:\LAB\D___TRN1.TRN' WITH FILE = 1, NOUNLOAD, STATS = 10 , NORECOVERY
RESTORE LOG [BACKUPTEST_BAK] FROM DISK = N'E:\LAB\D___COPY_TRN3.TRN' WITH FILE = 1, NOUNLOAD, STATS = 10 , RECOVERY
use BACKUPTEST_BAK
go
select * from tbl
백업전
카피백업전
로그백업전1
로그카피백업전2
로그카피백업전3
-- LSN (Log Sequence Number) 확인
restore headeronly from DISK='E:\LAB\D___FUL1.BAK'
restore headeronly from DISK='E:\LAB\D__COPY_FUL2.BAK'
restore headeronly from DISK='E:\LAB\D___TRN1.TRN'
restore headeronly from DISK='E:\LAB\D___COPY_TRN2.TRN'
restore headeronly from DISK='E:\LAB\D___COPY_TRN3.TRN'
38000000016800183 38000000026400001 38000000016800183 0
38000000029600037 38000000032800001 38000000029600037 38000000016800183
38000000016800183 38000000033600001 38000000029600037 38000000016800183
38000000033600001 38000000035200001 38000000029600037 38000000016800183
-- 이넘의 FisrtLSN 은 마지막로그백업의 LastLSN 과 연결된다.
38000000033600001 38000000036000001 38000000029600037 38000000016800183
-- 이넘의 FisrtLSN 은 마지막로그백업의 LastLSN 과 연결된다.
'SQL Server' 카테고리의 다른 글
오픈 트랜잭션 쿼리가 있는 데이터베이스 찾아보기 (0) | 2015.09.14 |
---|---|
SQL Server 다양한 와일드카드와 LIKE 연산자의 쓰임새 (0) | 2015.09.09 |
SQL Server 백업 with copy_only 사용하기 2탄 (0) | 2015.08.28 |
SQL Server 백업 with copy_only 사용하기 1탄 (0) | 2015.08.28 |
SQL Server 최초 전체백업 with copy_ony 후 로그백업은 실패다 (0) | 2015.08.28 |
- Total
- Today
- Yesterday