/**
온라인 복원 (전체가 깨졋을 경우로 가정)
- 대용량 데이터베이스로 가정하고 중요도가 높은 테이블이 포함된 파일그룹부터 복원할 경우
**/
USE master
RESTORE DATABASE testDB2 FROM DISK = 'D:\testDB2-FULL.bak'
WITH RECOVERY, REPLACE
/*
1. 기존의 백업을 무시하고 전체 백업실시
백업장치를 이용하기 위해 백업장치 3개 생성
USE master
EXEC sp_addumpdevice 'disk', 'backupDevice1', 'D:\back1.bak'
EXEC sp_addumpdevice 'disk', 'backupDevice2', 'D:\back2.bak'
EXEC sp_addumpdevice 'disk', 'backupDevice3', 'D:\back3.bak'
*/
BACKUP DATABASE testDB2 TO backupDevice1, backupDevice2, backupDevice3
WITH NAME = N'전체 백업', INIT, FORMAT
GO
/* 확인 */
RESTORE HEADERONLY FROM backupDevice1, backupDevice2, backupDevice3
/* 데이터를 추가 */
USE testDB2
INSERT INTO tbl1 VALUES (60)
INSERT INTO tbl2 VALUES (61)
INSERT INTO tbl3 VALUES (62)
GO
/* 데이터베이스 오프라인 후 저장된 파일(FG*.*)를 모두 삭제 */
USE master
ALTER DATABASE testDB2 SET OFFLINE
/* 다시 온라인 시키면 오류메시지와 함께 온라인 된다. */
ALTER DATABASE testDB2 SET ONLINE
/*
가장 중요한 파일그룹부터 복원. 하지만 주파일그룹은 반드시 제일 먼저 복원되어야함.
중요도는 tbl1 -> tbl3 -> tbl2 라고 가정한다면, 주파일그룹 -> FG3 -> FG2 순으로 복원
*/
/* 우선 트랜잭션 로그를 임시 파일에 백업 */
BACKUP LOG testDB2 TO DISK = 'D:\비상로그1.bak'
WITH NO_TRUNCATE, INIT
/* 다시 복원한다. 이번에는 임시 로그도 복원 */
RESTORE DATABASE testDB2 FILEGROUP = 'PRIMARY'
FROM backupDevice1, backupDevice2, backupDevice3
WITH PARTIAL, NORECOVERY
GO
RESTORE LOG testDB2 FROM DISK = 'D:\비상로그1.bak'
GO
/* PRIMARY 그룹의 tbl1에 접근 가능. */
USE testDB2
SELECT * FROM tbl1
/*데이터 추가. 현재 트랜잭션 로그 파일에 로그 기록을 추가*/
INSERT INTO tbl1 VALUES (70)
/* 나머지 그룹 테이블에 접근 불가능 */
SELECT * FROM tbl2
/* 다음으로 중요한 FG3를 복원. 비상로그를 먼저 백업함 */
BACKUP LOG testDB2 TO DISK = 'D:\비상로그2.bak'
WITH NO_TRUNCATE, INIT
GO
USE master
RESTORE DATABASE testDB2 FILEGROUP = 'FG3'
FROM backupDevice1, backupDevice2, backupDevice3
WITH PARTIAL, NORECOVERY
GO
RESTORE LOG testDB2 FROM DISK = 'D:\비상로그2.bak'
GO
/* 접근이 가능해졌는지 확인 */
USE testDB2
SELECT * FROM tbl3
/* FG2 복원 */
BACKUP LOG testDB2 TO DISK = 'D:\비상로그3.bak'
WITH NO_TRUNCATE, INIT
GO
USE master
RESTORE DATABASE testDB2 FILEGROUP = 'FG2'
FROM backupDevice1, backupDevice2, backupDevice3
WITH PARTIAL, NORECOVERY
GO
RESTORE LOG testDB2 FROM DISK = 'D:\비상로그3.bak'
GO
/* 확인 */
USE testDB2
SELECT * FROM tbl2
'연구개발 > SQL2008' 카테고리의 다른 글
추척파일을 테이블로 변환하기 (0) | 2010.05.04 |
---|---|
로그파일이 없을 시 복원 (0) | 2010.05.03 |
노출 영역 구성 (0) | 2010.05.02 |
데이터베이스 복원 예시 (오프라인) (0) | 2010.04.29 |
데이터베이스 백업 / 복구모델 (0) | 2010.04.27 |