데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

SNAPSHOT을 이용한 SQL Server 복원

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

데이터베이스를 운영하다 보면 데이터베이스 복원 이슈가 발생한다. 이때 백업파일이나 트랜잭션 로그 파일이 없다면 어떻게 복원할까? 스냅샷이 있다면 스냅샷의 시점으로 복원이 가능하다. 스냅샷의 정의를 간단히 정리하면 현재 데이터베이스 상태를 사진을 찍듯이 새로운 복사본으로 찍는다고 이해하면 될 듯 하다.

데이터베이스 스냅샷은 Enterprise, Developer 에디션에서만 가능하다.

 

현재 데이터베이스의 테이블을 확인 하자. 실습용 데이터베이스(SW_TEST)의 TBL_A 테이블안에 602개의 데이터가 있음을 확인 할 수 있다.

 

데이터베이스 스냅샷을 생성하자.

CREATE DATABASE SW_TEST_SNAPSHOT

ON

(NAME = SW_TEST,

FILENAME = 'D:\SQL_DATA\SW_TEST_SNAP.SNAPSHOT')

AS SNAPSHOT OF SW_TEST

GO

 

 

 

스냅샷이 생성되면 현재 데이터베이스의 MDF와 같은 크기의 사이즈로 스냅샷이 생성된 것을 확인 할 수 있다.

 

 

스냅샷 생성이 완료 되었으면 데이터베이스의 데이터를 삭제 하자. 데이터를 삭제하고 나니 602건의 데이터가 0건으로 모두 삭제 되었다.

 

 

스냅샷 데이터베이스로 이동하여 데이터를 조회해 보자. 스냅샷에는 스냅샷 생성 시점의 데이터 602건이 있음을 확인 할 수 있다.

 

 

스냅샷을 이용한 데이터베이스를 복원하기 전 복원하려는 원본 데이터베이스에 몇 개의 스냅샷이 있는지 확인 한다. 그리고 복원하려는 스냅샷 외에의 다른 스냅샷은 모두 삭제하여야 한다.

SELECT * FROM SYS.DATABASES WHERE SOURCE_DATABASE_ID = DB_ID()

 

 

 

스냅샷을 이용하여 복원을 진행하자. 복원 방법은 기존의 백업파일을 이용한 복원 방법과 거의 유사하다. 다만 디스크의 백업 파일 대신 스냅샷을 경로를 입력 하면 된다.

USE MASTER

GO

 

RESTORE DATABASE SW_TEST FROM DATABASE_SNAPSHOT = 'SW_TEST_SNAPSHOT'

GO

 

USE SW_TEST

GO

 

SELECT * FROM TBL_A

 

 

스냅샷을 이용하여 스냅샷 시점의 데이터 복원을 완료 하였다.

 

전체 백업파일과 트랜잭션로그 백업파일을 이용하면 다양한 옵션을 사용한 복원이 가능하지만 백업파일이 없을 경우 해당 시점의 스냅샷이 있는 경우 활용하면 매우 유용할 듯 하다.



강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1691 SQL Server에 연결된 어플리케이션 드라이버 버전 확인 jevida(강성욱) 2016.09.13 884
1690 SQL Server 성능 대시보드 jevida(강성욱) 2016.09.13 2216
1689 SSMS를 이용한 데이터베이스 복사 하기 jevida(강성욱) 2016.09.13 11538
1688 SQL Server에서 DB2 링크드 서버 연결 방법 jevida(강성욱) 2016.09.13 3288
1687 SQL Server 인덱스 활성 / 비활성 하기 jevida(강성욱) 2016.09.13 2352
1686 파티션 오프셋과 SQL Server에 대한 디스크 할당 단위 크기 jevida(강성욱) 2016.09.13 1687
1685 Read the End of a Large Error Log (에러로그 끝 부분 읽기) jevida(강성욱) 2016.09.13 1299
1684 데이터베이스 여유공간 확인 jevida(강성욱) 2016.09.13 1445
1683 FILE GROUP 간 데이터 이동 jevida(강성욱) 2016.09.13 1601
1682 문서화 되지 않은 sys.fn_PhysLocFormatter 함수 jevida(강성욱) 2016.09.13 948
1681 SQL Server 관리자 전용 연결(DAC) jevida(강성욱) 2016.09.13 3390
1680 파일 접근 권한으로 인한 DB복원 실패 작업 해결하기 jevida(강성욱) 2016.09.13 1934
1679 DBCC CHECKDB 실행과 히스토리 관리 jevida(강성욱) 2016.09.13 1846
1678 MDF를 이용한 데이터베이스 복원 jevida(강성욱) 2016.09.13 1174
1677 EventID 3041 Error jevida(강성욱) 2016.09.13 1417
1676 데이터베이스 미러 백업 jevida(강성욱) 2016.09.13 1313
» SNAPSHOT을 이용한 SQL Server 복원 jevida(강성욱) 2016.09.13 2315
1674 복사 전용 백업(COPY ONLY BACKUP) jevida(강성욱) 2016.09.13 3375
1673 SQL Server 기본 백업 폴더 변경하기 jevida(강성욱) 2016.09.13 4066
1672 sp_helpindex 의 향상된 버전 minsouk 2016.05.17 4562





XE Login