728x90
반응형
우선 ms-sql에서 복구모델이 '단순'일 때는 트랜잭션 로그 백업을 받을 수 없다.
복구모델이 '단순'일 때 백업화면을 보면
위와 같이 '전체', '차등' 두 개의 백업을 선택할 수 있다.
내가 궁금해 한 것은 이 부분이다. 복구모델이 '단순'이더라도 트랜잭션 로그가 쌓이는 건 분명하다.
복구모델이 '단순'이면 트랜잭션이 완료되었을 때 사라진다.
그럼 트랜잭션이 완료 되지 않고 트랜잭션 로그에 쌓인 상태에 전체백업을 받으면 어떻게 될까?
이게 내가 가진 의문이였다. 따라서 테스트를 진행해본 결과를 공유하고자 한다.
DB에서 transaction을 수행 후 종료하지 않았다.
1. 트랜잭션 시작 후 종료하지 않음
/* 트랜잭션 시작*/
create table a (a varchar(100), b varchar(100));
begin tran
insert into a values (REPLICATE('A', 100), REPLICATE('A', 100));
select count(*) from a;
--> '1'
/* 현재 트랜잭션이 있는지 확인하는 쿼리*/
dbcc opentran
--> 실행중인 트랜잭션이 있다고 나온다
이 상태 일 때 DB 전체백업을 받은 후 백업받은 파일로 복원을 하면 어떻게 될까?
2. 전체백업 복원
전체 백업 이후
복원할 때 '옵션'탭에서
* 기존 데이터베이스 덮어쓰기 (with replace)
* 대상 데이터베이스에 대한 기존 연결 닫기
옵션을 선택해서 복원을 진행 하였다.
select count(*) from a
--> '0'
/* 현재 트랜잭션이 있는지 확인하는 쿼리*/
dbcc opentran
--> 실행중인 트랜잭션이 없다고 나온다
위와 같이 복구모델이 '단순'일 때는 완료되지 않은 트랜잭션은 복구 할 수 없으며,
백업하기 전 진행중인 트랜잭션이 있는지 확인하고, session을 전부 끊고 백업을 받도록 하여야 한다.
물론 완벽하게 복구하려면 복구모델을 '전체'로 하는것을 권장한다.
728x90
반응형
'DB (데이터베이스) > MS-SQL' 카테고리의 다른 글
[ms-sql] ms-sql 전체백업, 차등백업, 로그백업 순서로 복원하기 (0) | 2024.02.02 |
---|---|
[ms-sql] DB를 다른 DB명으로 복원 (0) | 2024.02.02 |
[ms-sql] 복구모델 '전체' 일 때 복원방법 (0) | 2024.02.02 |
[ms-sql] ms-sql 새로운 서버에 데이터베이스 복원 (1) | 2024.02.02 |
[ms-sql] ms-sql 복원방법 (1) | 2024.02.02 |