문제

제가 자주 실행으로 다음 문제입니다.

작업에 어떤 변화 프로젝트에 필요한 새로운 테이블 또는 열에서 데이터베이스입니다.나는 데이터베이스를 수정을 계속합니다.일반적으로 저는 기억을 적은 변경할 수 있도록에 복제될 라이브 시스템입니다.그러나 나는 항상 기억을 변경했고 난 항상 기억을 기록합니다.

그래서 내가 만들 밀어 라이브 시스템을 얻을,큰 명백한 오류는 없 NewColumnX,습니다.

에 관계없이 사실이 될 수 없을위한 최선의 방법이 이 상황은 거기 위한 버전 관리 시스템 데이타베이스를 사용하는가?나는에 대해 걱정하지 않은 특정 데이터베이스 기술입니다.지 알고 싶다면 중 하나는 존재합니다.발생하는 경우 작동하 MS SQL Server,다음니다.

도움이 되었습니까?

해결책

루비 레일에 있는 개념 마이그레이션 --빠른 스크립트를 변경하는 데이터베이스입니다.

마이그레이션을 생성하는 파일이 있는 규칙을 증가는 db 버전(예:열을 추가)및 규칙으로 다운그레이드 버전(예:열이 제거).각각의 마이그레이션 번호가,테이블적재 db 버전입니다.

하기 마이그레이션, 명령을 실행"이라는 db:"마이그레이션에서 보이는 당신의 버전 적용에 필요한 스크립트가 있습니다.마이그레이션할 수 있습니다에서도 비슷한 방식으로 이루어집니다.

마이그레이션 스크립트를 자신을 유지하 버전에서는 컨트롤 시스템을 변경할 때에는 데이터베이스를 확인에 새로운 스크립트,그리고 모든 개발자에 적용할 수 있는 그것을 가지고 그들의 로컬 db 최신 버전입니다.

다른 팁

I'm a bit old-school,에서 사용하는 원본 파일에 대한 데이터베이스 만들기.실제로 2 파일-프로젝트 데이터베이스입니다.sql 및 프로젝트 업데이트됩니다.sql-에 대한 첫 번째는 스키마와 영구적 데이터,그리고 두 번째 위해 수정할 수 있습니다.물론,모두가에서 원본을 제어합니다.

을 때 데이터베이스의 변화,내가 먼저를 업데이트 주요 스키마에서 프로젝트 데이터베이스입니다.sql,다음 사본을 해당 정보를 프로젝트-업데이트됩니다.sql,예를 들어 변경 테이블의 문이 있습니다.내가 할 수 있습 그 후 업데이트를 적용하여 개발하는 데이터베이스,테스트,반복까지 수행됩니다.다음 확인에 파일을 다시 테스트,에 적용하고 생산입니다.

또한,나는 일반적으로 테이블에서 db-Config-와 같은:

SQL

CREATE TABLE Config
(
    cfg_tag VARCHAR(50),
    cfg_value VARCHAR(100)
);

INSERT INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');

그 후,나는 다음을 추가 업데이트 섹션:

UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';

db_version 만 변경되었을 때 데이터베이스를 재현,그리고 db_revision 나에게 표시하는 방법까지 db 가를 계산할 수 있습니다.

수 업데이트를 유지하에서 자신의 별도의 파일이 있지만 나는 선택을 매쉬 그들 모두 함께 사용하여 잘라내어 붙여넣기를 추출하는 관련 섹션이 있습니다.좀 더 객실 정돈 서비스가기 위해서,즉,제거':'에서$개정 1.1$동결하는 그들.

MyBatis (이전 iBatis)가 스키마 마이그레이션, 공구에 사용하기 위해 명령 라인입니다.그것은 기록에서 java 만 사용될 수 있는 어떤 프로젝트입니다.

을 달성하기 좋은 데이터베이스 변경 관리는 연습을 파악해야 합니다 몇 가지 핵심 목표입니다.따라서,마이바티스 스키마 마이그레이션 시스템(또는 마이바티스 마이그레이션)에 노력하겠습니다:

  • 어떤 데이터베이스,새로운 또는 기존
  • 을 활용하여 소스 제어 시스템(예:Subversion)
  • 동시 사용자 또는 팀은 독립적으로 작동하
  • 용 충돌 아주 보고 쉽게 관리
  • 허용에 대한 앞으로 뒤로 마이그레이션(발전,양도 각기)
  • 만들의 현재 상태를 데이터베이스를 쉽게 접근하고 이해할
  • 마이그레이션 사용에도 불구하고 접근 권한 또는 관료
  • 어떤 방법론
  • 을 권장 좋은,관행이 일관

레드 게이트가 제품 라 SQL 원본어.통합 TFS,SVN,SourceGear 볼트 볼트 프로,수은,억지로,그리고 증가하고 있습니다..

내가 추천 SQL 델타.나는 그냥을 생성하는 데 사용 diff 스크립트를 때 나를 코딩 기능을 내 사람들을 확인 스크립트로 원본을 제어 도구(Mercurial:))

그들은 그들 모두는 SQL server 및 오라클 버전입니다.

내가 궁금해 하나 언급된 오픈소스 도구 liquibase 는 Java 기반으로 작성한 거의 모든 데이터베이스를 지원하는 jdbc.에 비해 레일을 사용 xml 을 대신 루비 수행하는 스키마에 변경합니다.하지만 내가 싫어하는 xml 도메인에 대한 특정 언어를 아주 멋진 활용 xml 는 liquibase 하는 방법을 알고 있으로 롤백한 특정 작업

<createTable tableName="USER"> 
   <column name="firstname" type="varchar(255)"/>
</createTable>

지 않도록 처리해야 하는 이의신

순수한 sql 문 또는 데이터의 수입 또한 지원합니다.

대부분의 데이터베이스 엔진을 지원해야한 덤핑으로 데이터베이스 파일이 있습니다.알 MySQL 않는다.이것은 그냥 되는 텍스트 파일,그래서 당신은 당신을 제출할 수있는 Subversion,또는 당신이 무엇을 사용.쉬운 것을 실행하는 차이점에 파일이 너무.

사용하는 경우에는 SQL Server 하기 어려울 것이 비트 데이터를 야(aka 데이터베이스의 버전을 Visual Studio).일단 당신이 그것의 묘리를 터득하고,스키마 사이의 비교 원본어 버전의 데이터베이스 버전에서 생산하는 바람이다.고 클릭만으로 생성할 수 있습니다 귀하의 비교 DDL.

가 교육 동영상 MSDN 에서는 매우 도움이 됩니다.

나는에 대해 알아 DBMS_METADATA 와 두꺼비는하지만,경우 사람으로 올 수 있는 데이터 친구를 위해 Oracle 그때 생각했을 것입니다.

초기 테이블 생성 문서 버전 컨트롤러를 추가,변경 테이블이 문지만 파일을 편집하거나,단지 더 많은 파일이 변경적인 이름을 순차적으로,또는 변경"설정"그래서 찾을 수 있습니다 모든 변경 사항에 대한 특정 배포합니다.

부지런한 부분을 나는 볼 수 있습니다,종속성 추적,예를 들어,특정 배포에 대한 테이블 B 업데이트 하도록 할 수도 있습니다 전에 테이블 A.

Oracle,사용 두꺼비, 할 수 있는 덤프 스키마 다수의 개별 파일을(예를 들어,하나의 파일 테이블당).저는 어떤 스크립트를 관리하는 이 컬렉션에서 억지로 하지만 제가 생각해야 쉽게 할 수있는 단지에 대한 모든 개정을 제어 시스템입니다.

을 살펴 oracle 패키지 DBMS_METADATA.

특히,다음과 같은 방법은 특히 유용합니다:

  • DBMS_METADATA.GET_DDL
  • DBMS_METADATA.SET_TRANSFORM_PARAM
  • DBMS_METADATA.GET_GRANTED_DDL

일단 방법을 잘 알고 있는 그들은 작업(매우 자명)를 작성할 수 있습니다 간단한 스크립트를 덤프하는 결과 이러한 방법으로 텍스트 파일을 넣을 수 있는 소스 제어에서.행운을 빕니다!

지 무언가가있는 경우에 이를 위해 간단한 MSSQL.

를 쓰는데 db 릴리스크립트와 병행 코딩 및 유지 릴리스 스크립트는 프로젝트에서 특정 섹션에 SS.만약 내가 변경하는 코드를 필요로 하는 db 변경,그 후 업데이트 출시 스크립트에서 동일한 시간입니다.출시 하기 전에,내가 실행하는 스크립트 출시에 깨끗한 dev db(복사한 구조를 현명하에서 생산)내 최종 시험에습니다.

나는이 해안 관리(또는 관리하려는)스키마는 버전이 있습니다.최고의 접근 방식에 따라 달라집 도구니다.당신이 얻을 수있는 경우 퀘스트 소프트웨어 도구"Schema Manager"당신이 좋습니다.오라클,자신이 열등한 도구입니다"라고도 부르는 스키마의 관리자"(혼란 많은?) 는하지 않는 것이 좋습니다.

없이 자동화된 도구(다른 여기에 코멘트에 대해 데이터를 야기)를 사용하는 스크립트와 DDL 파일을 직접 있습니다.선택하는 방식,문서,그리고 그것을 따라 엄격히 준수합니다.내가 좋아하는 능력을 갖는 데이터베이스를 다시 만들에 주어진 순간,그래서 내가 선호하 DDL 수출 전체의 데이터베이스(난 경우 DBA),또는 개발자 스키마에(있을 경우 내에서 제품 개발 모드).

PLSQL,개발자 도구에서 모든 Arround 자동화,플러그인에 대한 저장소의 작동 확인(하지만)Visual Source 안전합니다.

웹에서:

는 버전 제어 플러그인에서 제공하는 단단한 통합을 사 PL/SQL 개발자 IDE>>고 모든 버전을 제어하는 시스템이 지원 Microsoft SCC 인터페이스는 사양에 있습니다.>>이 포함되어 있는 대부분의 버전 관리 시스템과 같은 Microsoft Visual SourceSafe>>Merant PVC 및 MKS 소스 무결성이 있습니다.

http://www.allroundautomations.com/plsvcs.html

어 스튜디오 할 수 있습을 반대하는 데이터베이스는 스키마에 도구 및을 비교할 수 있습 그것은 라이브 데이터베이스가 있습니다.

예제:반대의 개발 스키마로 ER--스튜디오 비교하는 생산 그리고 그것은 목록의 차이점이 있습니다.할 수 있는 스크립트를 변경하거나 그냥 그들을 밀어를 통해 자동으로 합니다.

일단 당신이 당신의 스키마에서 어 스튜디오,당신은 당신할 수 있습 저장하거나 생성 스크립트나로 저장하는 독점적인 바이너리 및 저장에서 제거됩니다.만약 당신이 이제까지 다시 가고 싶은 과거 버전의 계획,그냥 확인하고 밀어의 db 플랫폼입니다.

가 PHP5"데이터베이스를 마이그레이션 프레임워크"라는 Ruckusing.나는 그것을 사용하지 않은하지만, 쇼는 아이디어,사용하는 경우에는 언어 데이터베이스를 만들고 필요한 경우,당신을 추적하는 소스 파일이 있습니다.

당신이 사용할 수 있는 Microsoft SQL 서버 데이터 도구 visual studio 에서를 생성하는 스크립트를 위한 데이터베이스 객체의 한 부분으로 SQL 서버 프로젝트입니다.을 추가할 수 있습니다 스크립트를 사용하여 소스 제어 소스 제어에 통합되어 visual studio.또한,SQL 서버 프로젝트를 사용할 데이터베이스를 확인합체를 사용하여 컴파일러와 생성하는 스크립트는 배포를 업데이트하려면 기존의 데이터베이스를 만들거나 새로운 하나입니다.

우리가 사용하는 MS 팀은 데이터베이스 시스템 Edition 와 함께 매우 좋은 성공이다.통합 TFS 버전을 제어하고 Visual Studio more-or-less 원활하게 할 수 있습이 우리를 관리하 저장은 발동,전망,etc., 쉽습니다.분쟁 해결할 수 있는 고통을,하지만 버전의 역사가 완료 후 이루어집니다.그 이후,마이그레이션을 QA 및 생산은 매우 간단합니다.

그것이 공평을 말하는 것 그것을 버전 1.0 제품,하지만,지 않고 몇 가지 문제입니다.

스키마 비교를 위해 Oracle 이 도구는 특별히 설계된 마이그레이션에서 변경 내용이 Oracle 데이터베이스를니다.를 방문하시기 바랍에 대해서는 아래 URL 을 다운로드 링크를 사용할 수 있는 소프트웨어에 대한 완전한 기능의 시험입니다.

http://www.red-gate.com/Products/schema_compare_for_oracle/index.htm

의 부재에서 벤처 캐피탈에 대한 테이블이 변경되었습 로깅을 그들에 wiki.적어도 난 볼 수 있습니다면과 이것이 왜 변경되었습니다.그것은 지금까지 완벽으로 모두가 하고 그것을 우리는 여러 제품의 버전에서는 사용 하지만 아무것보다는 더 낫다.

내가 권하고 싶 다음 두 가지 방법 중 하나.첫째,투자에 PowerDesigner 에서 Sybase.Enterprise Edition.그것은 당신이 디자인 실제 datamodels,그리고 훨씬 더 많은.그러나 그것은 저장소를 확인 할 수있는 당신 모델입니다.각각의 새로운 확인할 수 있는 새로운 버전 비교할 수 있습니다 모든 버전을 다른 버전이며 심지어 무엇인 데이터베이스에서 시작합니다.그 다음 현재의 목록을마다 차이는 마이그레이션해야 하고 다음을 기반으로 스크립트는 그것을 할 수 있습니다.그것은 저렴하지만 그것은 거래에서 두 번 가격하고 그것의 투자 수익률은 약 6 개월입니다.

다른 아이디어에 설정하는 것입니다 DDL 감사(작품에서 오라클).이 테이블을 만들과 함께 모든 변경을 합니다.는 경우 쿼리로부터 변경은 타임 스탬프 마지막으로 이전한 데이터베이스에 변경을 자극하는 지금,당신의 순서 있는 목록 모든 것을 당신은 완료했습니다.몇 where 절을 제거하 zero-sum 변경과 같은 테이블을 만들 foo;다음에 드롭 테이블 foo;와 쉽게 구축할 수 있습 mod 스크립트입니다.왜 계속 변화에서 위키,그 두 번 작동합니다.자 데이터베이스를 추적한다.

두 개의 책을 권장 사항:"Refactoring"데이터베이스에 의해 엠 블러와 Sadalage 와"민첩한 데이터베이스 기술"에 의해 엠 블러.

누군가가 언급된 레일 마이그레이션입니다.나는 생각한 그들은 훌륭한 일을 밖에서도 레일 응용 프로그램.나는 그들을 사용에 ASP 응용 프로그램의 SQL 서버는 우리가 과정에서의 이동을 수도 있습니다.을 확인합 마이그레이션 스크립트로 자신을 VCS.기 게시물에 의해 실용적인 데이브 토마스 게 확인할 수 있게 되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top