USE master
GO
데이터베이스 생성
CREATE DATABASE test
ON PRIMARY (
NAME = 'test',
FILENAME = 'D:\SQL2005DB\Data\test.mdf'
),
FILEGROUP test_group (
NAME = 'test_group',
FILENAME = 'D:\SQL2005DB\Data\test.ndf'
)
LOG ON(
NAME = 'test_log',
FILENAME ='D:\SQL2005DB\Log\test.ldf'
)
GO
복구모델을 전체로 변경
※ 복구모델이 싱글이면 파일 그룹 백업이 안된다.
ALTER DATABASE test SET RECOVERY FULL
테스트 테이블 t1, t2 생성
USE test
GO
CREATE TABLE t1
(
id int,
name char(3)
)
GO
t2 테이블은 test_group 파일그룹에 생성
CREATE TABLE t2
(
id int,
name char(3)
)
ON test_group
GO
전체백업
BACKUP DATABASE test TO DISK = 'D:\SQL2005DB\Backup\full.bak'
데이터 입력
INSERT t1 VALUES(1,'aaa')
primary 파일 그룹 백업
BACKUP DATABASE test FILE = 'test' TO DISK = 'D:\SQL2005DB\Backup\test.bak'
데이터 입력
INSERT t1 VALUES(2,'bbb')
test_group 파일 그룹 백업
BACKUP DATABASE test FILEGROUP = 'test_group' TO DISK = 'D:\SQL2005DB\Backup\test.bak'
데이터 입력
INSERT t2 VALUES(22,'ccc')
로그 백업
BACKUP LOG test TO DISK = 'D:\SQL2005DB\Backup\test.log'
데이터 입력
INSERT t2 VALUES(33,'ddd')
테스트를 위해 SQL Server 서비스를 중지하고
D:\SQL2005DB\Data\test.ndf 파일을 삭제한후
다시 SQL Server 서비스 시작
test_group 파일 그룹 복원 시도
USE master
GO
백업파일 확인
RESTORE HEADERONLY FROM DISK = 'D:\SQL2005DB\Backup\test.bak'
GO
test_group 파일그룹 복원 시도
RESTORE DATABASE test FILEGROUP = 'test_group' FROM DISK = 'D:\SQL2005DB\Backup\test.bak'
WITH FILE = 2, NORECOVERY
GO
에러발생
메시지 3159, 수준 16, 상태 1, 줄 1
데이터베이스 "test"의 비상 로그 백업이 수행되지 않았습니다. 로그에 포함된 작업이 손실되지 않도록 하려면 BACKUP LOG WITH NORECOVERY를 사용하여 로그를 백업하십시오. 로그 내용을 덮어쓰려면 RESTORE 문에 WITH REPLACE나 WITH STOPAT 절을 사용하십시오.
메시지 3013, 수준 16, 상태 1, 줄 1
RESTORE DATABASE이(가) 비정상적으로 종료됩니다.
로그 백업
BACKUP LOG test TO DISK = 'D:\SQL2005DB\Backup\test.log'
WITH NO_TRUNCATE
test_group 파일 그룹 복원
RESTORE DATABASE test FILEGROUP = 'test_group' FROM DISK = 'D:\SQL2005DB\Backup\test.bak'
WITH FILE = 2, NORECOVERY
GO
로그 백업파일 확인
RESTORE HEADERONLY FROM DISK = 'D:\SQL2005DB\Backup\test.log'
GO
로그 복원
RESTORE LOG test FROM DISK = 'D:\SQL2005DB\Backup\test.log'
WITH FILE = 1, NORECOVERY
GO
RESTORE LOG test FROM DISK = 'D:\SQL2005DB\Backup\test.log'
WITH FILE = 2, RECOVERY
GO
복원이 잘되었는지 확인
USE test
GO
SELECT * FROM t1
SELECT * FROM t2
GO
결과
id name
----------- ----------
1 aaa
2 bbb
(2개 행 적용됨)
id name
----------- ----------
22 ccc
33 ddd
(2개 행 적용됨)
이올린에 북마크하기