본문 바로가기

MSSQL

데이터 파일 삭제 발생시 CONTINUE_AFTER_ERROR 옵션

반응형

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)

반응형