지난 몇 년간 우리가 해왔 던 방식은 데이터베이스를 특정 버전에서 다른 버전으로 업데이트 할 수있는 데이터베이스 업데이트 스크립트를 사용하는 것입니다.
우리가 적용하는 업데이트 스크립트에는 테이블 변경과 데이터 변경이라는 두 가지 유형이 있습니다.
테이블 변경 사항은 직접 작성하여 기록되며 오류없이 동일한 데이터베이스에 대해 스크립트를 여러 번 안전하게 실행할 수 있도록 설계되었습니다. 예를 들어, 표에 표가없는 경우에만 표를 추가합니다. 이 방법을 사용하면 특정 버전에서 다음 버전으로 업그레이드하는 것뿐만 아니라이 버전 별 스크립트를 핫픽스 적용에 사용할 수 있습니다. 핫픽스는 단순히 파일 끝에 추가 항목으로 적용됩니다.
이 접근 방식에는 개발자 규율이 필요하지만 정확하게 구현되면 4 가지 주요 개정판과 4 년이 지난 데이터베이스를 최신 버전으로 업데이트 할 수있었습니다.
데이터가 변경된 경우 Red Gate의 도구, 특히 SQL Data Compare의 도구를 사용합니다.
데이터베이스 프로그래밍 기능 (저장 프로 시저, 트리거 등)에 관한 한 우리는 실행될 때 현재 항목을 모두 삭제 한 다음 현재 버전을 다시 추가하는 스크립트 하나를 유지합니다. 이 프로세스는 모든 프로그래밍 가능성 요소에 대해 엄격한 명명 규칙을 사용하여 활성화됩니다 (저장 프로 시저의 이름은 s_prefix_로 시작하고 fn_prefix_로 시작하는 함수 등).
올바른 스크립트 버전이 적용되도록 데이터베이스의 현재 버전을 기록하기 위해 데이터베이스에 저장되는 작은 버전 테이블 (일반적으로 1 행)을 추가했습니다. 이 테이블은 적용될 때 테이블 갱신 스크립트에 의해 갱신됩니다. 또한 처음부터 데이터베이스를 생성하기 위해 적용된 스크립트에서이 테이블을 업데이트합니다.
마지막으로 스크립트를 적용하기 위해 현재 데이터베이스 버전과 데이터베이스의 현재 버전을 기반으로 적용 할 스크립트를 지정하는 매니페스트를 읽는 작은 도구를 만들었습니다.
우리가 문제를 두 가지 버전, 3, 4,이 업데이트 스크립트, update_v3.sql 및 update_v4.sql가이 있다고 가정 : 예를 들어
. 우리는 하나의 초기 구조 스크립트 인 tables.sql과 하나의 프로그래밍 가능 스크립트 인 stored_procs.sql을 가지고 있습니다. 그 가정을 감안할 때, 매니페스트 같이 보일 것입니다 :
tables.sql> 때 버전 = 0 update_v3.sql>시에서 major_version < = 3 update_v4.sql>시에서 major_version < = 4 stored_procs.sql> always
이 도구는 현재 버전을 평가하고 매니페스트에 지정된 순서대로 스크립트를 적용하여 알려진 방식으로 데이터베이스가 항상 업데이트되도록합니다.
이 정보가 도움이되기를 바랍니다.
데이터베이스 프로젝트에 대해 자세히 알아야합니다. 그것들은 스크립트를 작성하는 것이 아니며 변경 스크립트가 빠져 있지도 않습니다. –