반응형
WITH CONTINUE_AFTER_ERROR
: 데이터베이스에 액세스할 수 없는 상태에서 마지막 트랜잭션 로그를 백업하여 복구 지점을 최대한 확보하는 것이 목적
동작방식
: 손상된 데이터베이스에서 오류가 발생해도, 백업 작업을 멈추지 않고 가능한 한 많은 로그를 백업
: 전체 백업이나 차등 백업에서는 이 옵션을 사용할 수 없고, 트랜잭션 로그 백업에만 사용
MSSQL에서는 해당 옵션을 사용하면 데이터 파일 액세스 오류가 발생한 상황에서도 로그 백업을 시도할 수 있다.
EX) 하드웨어 오류로 데이터 파일이 삭제되었을 경우
CREATE DATABASE SQLTAG
ON PRIMARY
(NAME=SQLTAG_DATA, FILENAME=N'D:.MDF')
LOG ON
(NAME = SQLTAG_LOG, FILENAME =N'D:.LDF')
GO
-- 백업
BACKUP DATABASE [SQLTAG] TO DISK = 'C:/.BAK'
WITH INIT
GO
여기서 USE SQLTAG를 사용하면
'파일에 엑세스 할 수 없거나 메모리 또는 디스크 공간이 부족하여 데이터베이스를 열 수 없습니다.'
라는 내용이 출력된다.
이 경우 우선 CONTINUE_AFTER_ERROR 옵션을 사용하여 로그 백업을 먼저 수행
-- 백업 먼저 수행
BACKUP LOG [SQLTAG] TO DISK ='D:\SQL\BACKUP\.TRN'
WITH CONTINUE_AFTER_ERROR
GO
-- 전체 DB 복원
RESTORE DATABASES [SQLTAG] FROM DISK ='D:/.TRN' WITH NORECOVERY, REPLACE
GO
-- 앞에서 백업해놓은 로그 백업 복원
RESOTRE LOG [SQLTAG] FROM DISK ='D:\SQL\BACKUP\.TRN'
WITH RECOVERY
GO
작업 후 DB 상태 확인
SELECT NAME, STATE_DESC FROM SYS.DATABASES WHERE NAME='SQLTAG'
주의사항
: CONTINUE_AFTER_ERROR 옵션을 사용하는 것은 로그 백업 중 오류를 무시하고 진행하는 것이므로, 일부 데이터가 손실될 수 있음(데이터 일관성 보장 X)
반응형
'MSSQL' 카테고리의 다른 글
[ERROR LOG] CImageHelper::Init () Failed load of symbol file with path (0) | 2024.12.26 |
---|---|
[MSSQL] INDEX REBUILD 및 조각화 진단 (1) | 2024.09.25 |
MSSQL 로그/데이터 백업/복구 SHIRNK (0) | 2024.05.27 |
MSSQL 아키텍처 및 프로세스 (0) | 2023.04.11 |