본문 바로가기

SQL Server/SQL Server 형상 관리

[Sequel Safe] 데이터베이스 일일 빌드 (Database Daily Build)

제가 생각하는 데이터베이스의 일일 빌드 (daily build)란..

"현재 버전의 개발 DB가 오류 있는 상태인지, 오류 없는 상태인지 확인하기 위한 수단" 입니다.

테이블, 컬럼, 뷰, SP, UDF 등을 추가, 수정, 삭제할 때 신경 쓰이는 점 중 하나로 Dependency를 꼽을 수 있을텐데요.

"내가 작업한 내용이 개체간의 dependency를 깨지 않았다"라고 확신하기란... 말만큼 쉽지 않은데, 특히... 하나의 DB를 여러명의 개발자가 공유하여 개발하거나, 여러명의 선임자들에 의해 관리되어온 DB를 인계받은 경우엔 그 어려움이 더 클 수 밖에 없습니다.

만약 우리가 데이터베이스를 매일 (또는 특정 주기로..) 재생성하고 개체간의 참조에 이상이 없는지 확인하는 작업을 자동화할 수 있다면... 이런 고민은 상당 부분 해소되지 않을까요?

이제 소개하는 Sequel Safe의 Daily Build 기능은... 수집된 DDL문을 기초로 매일 DB를 재생성하고, 재생성 과정 중 발견된 이상을 기록으로 남기는 것입니다.

사실 개발 DB를 실제로 DROP하고 새로 CREATE하기는 좀 힘든 면이 있습니다.

대안으로 DBDailyBuild라는 더미 데이터 베이스를 만들고... 매번 이 데이터베이스를 초기화한 후... 개발 DB의 모든 개체를 이 곳에 생성해 볼 수 있는데... 저는 이 방법을 사용했습니다.

아직 보완해야할 내용이 많지만... 소개를 미루진 않겠습니다.


I. 일일 빌드 설정

SQLSafe.dbo.P_DoDailyBuild

위의 SP를 SQL 서버에 job으로 등록합니다.
P_DoDailyBuild를 실행하면 개발용 SQL 인스턴스에 있는 모든 데이터베이스가 빌드됩니다.

만약 특정 데이터베이스만 빌드해야한다면, 아래와 같이 실행 할 수 있습니다.

EXEC SQLSafe.dbo.P_DoDailyBuild N'데이터베이스이름'


II. 일일 빌드 결과 확인

SQLSafe.dbo.DailyBuilds 테이블을 조회하면 일일빌드의 성공/실패 여부를 알 수 있습니다.

만약 실패라고 기록되어 있다면 SQLSafe.dbo.DailyBuildDetails 테이블을 조회하여 어떤 단계에서 문제가 있었는지 확인하시기 바랍니다.