모든 데이터베이스 개체는 버전 제어 시스템에서 별도의 파일로 저장되어야합니다. 버전 관리 시스템이 예처럼 파일을 포함 할 수있다 : 당신이 어떤 DB 객체를 수정할 때마다
|- tables
|- employees.sql
|- contracts.sql
|- packages
|- contract_api.sql
|- functions
|- get_employee_name.sql
...etc...
는, 당신은 또한 버전 관리 시스템에서 적절한 SQL (DDL) 파일을 수정해야합니다. 예를 들어, contract_api 패키지를 수정하면 contract_api.sql 파일을 업데이트합니다. 이 파일은 수정되었으므로 연속 통합 엔진에 의해 설치 될 수 있습니다.
아시다시피 두 번 실행할 수없는 DDL 스크립트가 있습니다. 예를 들어, 'CREATE TABLE mytable ...'스크립트는 한 번만 실행될 수 있습니다. 그리고 시스템이 이미 프로덕션 환경에 있으면 'CREATE TABLE ...'스크립트 헤더에 'DROP TABLE mytable'문을 사용할 여유가 없습니다. 따라서 프로덕션 시스템의 경우 변경 사항 만 제공하는 델타 스크립트을 작성해야합니다. 이 경우 'ALTER TABLE mytable ADD COLUMN ...'문을 포함하는 employees_upd01.sql이라는 새 파일을 간단하게 작성할 수 있습니다.
|- tables
|- employees.sql
|- employees_upgr20091001.sql
|- employees_upgr20091004.sql
|- contracts.sql
|- packages
|- contract_api.sql
|- functions
|- get_employee_name.sql
...etc...
을 그리고 있기 때문에 이것은 OK입니다 :
시간 후 저장소는 다음과 같이 할 수는 데이터베이스에 오늘날의 '점진적 변화를 제공 할 필요가있을 때 1) - 오늘 수정 된 파일을 배포 2) 시스템을 새로 설치해야하는 경우 - 모든 스크립트를 순서대로 실행합니다 (예 : 첫째 employees.sql 다음 employees_upgr20091001.sql 등
각 DB 객체 버전 관리 시스템에서 별도의 파일이기 때문에, 당신은 모든 변경을 통해 좋은 제어 할 수 있습니다.
어떻게 SC에 DB를 설치합니까? –
내가 언급 한 마법사를 보면 데이터가 포함 된 모든 스크립트가 생성됩니다. 여기에는 SP가 포함되지만 더 관리하기 쉬운 파일을 별도로 마련했습니다. TortoiseSVN을 사용하여 해당 파일을 제어합니다. Jeff의 기사를 보면 더 좋은 방법이 있습니다. –
만약 내가 할 수만 있다면 얼마나 많은 사람들이 다른 코드와 마찬가지로 SQL 변경 사항을 다루지 않는지에 대해 놀랄 것입니다. – HLGEM