개발 테스트 환경을 위해 운영 데이터베이스의 FULL BACKUP 데이터를 다른 인스턴스에서 RESTORE 하는 스크립트를 아래와 같이 정리하였습니다. 마이크로소프트 기술지원으로 제공된 SQL Script 를 참조하며 환경에 맞게 수정하였으며 해당 스크립트를 블로그에 공개하지 않습니다.
[환경]
SQL Server 2005 SP1 Later
Default Instance : MSSQLSERVER (Source)
Named Instance : SEC (Destination)
[시나리오]
1. Source Instance 에 있는 LAIGO 데이터베이스를 D:\SQL\BACKUP 폴더에 LAIGO_DB_FULL_YYYYMMDD.BAK 파일 형식으로 매일 1회 Full Backup 합니다.
2. 위에서 백업된 데이터를 Destination Instance 에서 LAIGO 라는 데이터베이스 이름으로 D:\SQL\DATA 폴더에 매일 1회 Restore 합니다. 단, Destination Instance 에서 LAIGO라는 데이터베이스 이름이 이미 존재할 경우 LAIGO_YYYYMMDD로 RENAME 합니다.
3. Full Backup 데이터는 2일을 보관하며, 복원한 데이터베이스도 2개(2일)만 유지하며 이외는 삭제합니다.
[사전준비]
1. SQL Server 2005 2개의 인스턴스
2. 사용자 프로시저
가. Source Instance
1) up_DBA_BACKUP_DB.sql
- 데이터베이스 이름과 백업 종류를 결정하여 지정된 폴더에 백업합니다.
나. Destination Instance
1) up_DBA_RENAME_DB.sql
- 변경할 데이터베이스 이름을 인자로 받아 RENAME 합니다.
2) up_DBA_RESTORE_DB.sql
- 복원할 데이터베이스 이름과 데이터 파일이 복원될 경로를 인자로 받아 복원합니다.
3) up_DBA_DROP_DB_EXPIRED.sql
- 삭제할 데이터베이스 이름과 만료 일자를 인자로 받아 데이터베이스를 삭제합니다.
[백업 데이터베이스 설정 / Source Instance]
1. MSSQLSERVER(Source), SEC(Destination) 인스턴스를 연결합니다. 유지 관리 계획을 사용해야 하므로 SQL Server Agent 서비스도 시작합니다. (아래 그림과 같이 SEC 인스턴스의 SQL Server Engine 버전이 낮습니다. 테스트 환경이므로 그냥 무시하고 진행하겠습니다)