- Today
- Total
Codemental
[MSSQL/SQL Server Management] 데이터 베이스 복제하기 본문
요구사항
회사 개발서버 내에 특정 데이터베이스의 데이터를 초기화가 필요하다고 하셨다.
셋팅 기능인 초기 필수 데이터를 제외하고는 데이터가 없는 빈 깡통 DB를 만들라고 하셨다.
개발서버 DB상황
- 사내 개발서버의 DB로, 테스트용도라 데이터의 양이 많지 않다.
- 셋팅성 테이블의 데이터는 필요하다.
- 일반적인 데이터 값은 전부 불필요하다. (사용자 계정만 임의로 몇개 넣어준다.)
- 사용자 계정 데이터는 엑셀 파일로 전달 받아서 새로 넣는다.
해결방법 케이스
1. 데이터베이스를 새로 생성한다.
1) 데이터베이스를 생성한다.
2) 전체 테이블의 CREATE문만 실행한다.
(테이블이나 컬럼에 comment가 필요하다면 ALTER문도 실행)
3) Setting 데이터를 INSERT한다.
4) sample 사용자 데이터를 INSERT한다.
2. 기존 DB를 복제한다.
1) 새로운 DB를 백업용으로 만들어 기존 DB를 복사한다.
2) 필요없는 데이터만 지운다.
선택한 방법 - 2번
데이터가 많지 않기 때문에 복제 후 값을 지우는 것이 오히려 요구사항을 빠르게 만족할 수 있다고 생각.
DB를 복제한 뒤, 데이터를 지우기로 한다.
작업방법
1. 새 데이터베이스를 생성한다.
2. 새로 생성한 데이터베이스에 기존 데이터베이스를 복사한다.
1) 일반
2) 파일
- 더보기 버튼(...)을 눌러서 기존DB명 대신 신규 DB명으로 논리적, 물리적 파일명을 변경해준다.
- 이 파일명 변경을 안해주면 에러가 발생한다.
System.Data.SqlClient.SqlError: 파일 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\DBNAME.mdf'을(를) 덮어쓸 수 없습니다.
데이터베이스 'DBNAME'에서 사용하고 있습니다.
Microsoft.SqlServer.SmoExtended
3) 옵션
데이터 베이스 복제가 완료되었다.
이제 사용자들이 데이터를 쌓는 테이블들을 비우면 된다.