테이블 백업은 기존 테이블의 복제본을 만드는 방식을 주로 사용 하는데 이때 가장 단순한 방법은 테이블의 데이터만 복제하는 것이다. 하지만 이렇게 하면 원본 테이블의 키, 인덱스 등을 포함한 스키마는 복제되지 않는다.
만약 스키마까지 완전히 복제해서 백업하고 싶으면 한 단계를 더 거쳐야 된다. MySQL에서는 create table like~ 구문으로 테이블의 스키마를 그대로 복제할 수 있는데 MSSQL에서는 그런 구문은 없고 다른 방법을 쓴다.
1. 데이터만 백업
테이블의 형태와 데이터만 복제하는 건 아주 간단하다.
select * into orders_20240303 from orders;
이런 식으로 select * into 뒤에 백업본 이름을 쓰고 from 절 뒤에 원본 테이블명을 넣고 실행하면 된다.
그러나 이 방법은 문제가 하나 있는데 보이는 것처럼 키나 인덱스까지는 복사하지 않는다.
단순 데이터 보관이면 아무 문제가 없겠지만 업데이트 이후 문제가 발생했을 때 기존 테이블을 리네임하고 백업본을 그대로 대체해서 사용하기엔 무리다.
2. 테이블 스키마 + 데이터 백업
테이블 스키마까지 백업하려면 먼저 테이블을 그대로 복제해야 한다.
백업하려는 테이블이 속한 데이터베이스를 우클릭 > 태스크 > 스크립트 생성으로 들어간다.
개체 선택 탭 > 특정 데이터베이스 개체 선택 > 백업하려는 테이블을 선택 > 다음을 누른다.
특정 위치에 스크립트 저장 > 새 쿼리 창에 저장 > 다음을 누른다.
과정을 마무리한다.
이제 orders 테이블 생성하기 위한 쿼리가 생성됐다. 이걸 그대로 쓰진 않고
이렇게 테이블명만 백업하려는 테이블 이름으로 바꿔주고 쿼리를 실행하면 된다.
테이블이 키, 인덱스 등을 포함해서 그대로 복제되는 걸 볼 수 있다.
이제 마지막으로 생성한 테이블에 데이터를 insert 하면 백업이 완료된다.
insert into orders_20240303 select * from orders;