본문 바로가기
㏈ª By β┖υΕJini/MS-SQL

MS-SQL 2005 부분 백업 하기

by ㏈ª ☞ β┖υΕJini.κR 2009. 7. 21.

사용자 삽입 이미지


MS-SQL 2005 에서 적용된 부분백업에 대한 내용 ^^
부분 백업은 전체 데이터베이스 백업과 유사하지만 부분 백업에 모든 파일 그룹이 포함되지는 않습니다.

대신 부분 백업은 파일 그룹, 모든 읽기/쓰기 파일 그룹, 선택적으로 지정된 읽기 전용 파일의 모든 데이터를 포함합니다. 부분 백업은 읽기 전용 파일 그룹을 제외할 때마다 유용하게 사용할 있습니다. 읽기 전용 데이터베이스의 부분 백업에는 파일 그룹만 포함됩니다.

 

l  구문 예제
 BACKUP DATABASE database_name READ_WRITE_FILEGROUPS [ , <file_filegroup_list> ] TO <backup_device>

 

 

USE MASTER

GO

 

-- BackupTest FileGroup DB CREATE

CREATE DATABASE BAKTEST

ON PRIMARY

(NAME = 'BAKTEST', FILENAME = 'D:\DBTEST\BAKTEST.MDF'),

FILEGROUP SECONDGROUP

(NAME = 'BAKTEST2', FILENAME = 'D:\DBTEST\BAKTEST2.NDF'),

FILEGROUP THIRDGROUP

(NAME = 'BAKTEST3', FILENAME = 'D:\DBTEST\BAKTEST3.NDF'),

FILEGROUP FOURTHGROUP

(NAME = 'BAKTEST4', FILENAME = 'D:\DBTEST\BAKTEST4.NDF')

LOG ON

(NAME = 'BAKTEST_LOG', FILENAME = 'D:\DBTEST\BAKTEST_LOG.LDF')

GO

 

--부분 백업 (전체백업과 비슷하지만  읽기 전용파일그룹은 백업하지 않음)

BACKUP DATABASE BAKTEST READ_WRITE_FILEGROUPS

       TO DISK = 'D:\DBTEST\BAKTEST0.BAK' WITH INIT

GO

/*

파일1에서데이터베이스'BAKTEST', 파일'BAKTEST'에대해176개의페이지를처리했습니다.

파일1에서데이터베이스'BAKTEST', 파일'BAKTEST2'에대해8개의페이지를처리했습니다.

파일1에서데이터베이스'BAKTEST', 파일'BAKTEST3'에대해8개의페이지를처리했습니다.

파일1에서데이터베이스'BAKTEST', 파일'BAKTEST4'에대해8개의페이지를처리했습니다.

파일1에서데이터베이스'BAKTEST', 파일'BAKTEST_LOG'에대해3개의페이지를처리했습니다.

BACKUP DATABASE...FILE=<name>() 203개의페이지를0.350초동안처리했습니다(4.527MB/).

*/

 

-- THIRDGROUP 그룹 데이터 베이스를 읽어 전용으로 변경

ALTER DATABASE BAKTEST MODIFY FILEGROUP THIRDGROUP READ_ONLY

GO

 

USE BAKTEST

GO

 

 

SELECT * FROM SYS.FILEGROUPS

GO

 

BACKUP DATABASE BAKTEST READ_WRITE_FILEGROUPS TO DISK = 'D:\DBTEST\BAKTEST0.BAK' WITH INIT

GO

/*

파일1에서데이터베이스'BAKTEST', 파일'BAKTEST'에대해176개의페이지를처리했습니다.

파일1에서데이터베이스'BAKTEST', 파일'BAKTEST2'에대해8개의페이지를처리했습니다.

파일1에서데이터베이스'BAKTEST', 파일'BAKTEST4'에대해8개의페이지를처리했습니다.

파일1에서데이터베이스'BAKTEST', 파일'BAKTEST_LOG'에대해2개의페이지를처리했습니다.

BACKUP DATABASE...FILE=<name>() 194개의페이지를0.254초동안처리했습니다(5.963MB/).

*/

 

 

-- 복원테스트

-- SQL SERVER를정지하고D:\DBTEST\BAKTEST2.NDF를삭제한후SQL SERVER를실행시킨다.

USE MASTER

GO

 

--우선최근로그까지백업(NO_TRUNCATE를사용)을받는다.

BACKUP LOG BAKTEST TO DISK = 'D:\DBTEST\BACKUP\BAKTEST_LOG1.BAK' WITH NO_TRUNCATE, INIT

GO

 

--복원시작

RESTORE DATABASE BAKTEST FILEGROUP = 'SECONDGROUP'

       FROM DISK = 'D:\DBTEST\BACKUP\BAKTEST0.BAK' WITH NORECOVERY

GO

RESTORE LOG BAKTEST

       FROM DISK = 'D:\DBTEST\BACKUP\BAKTEST_LOG1.BAK' WITH RECOVERY

GO