문제

내 필요는 상당히 기본적이며 바퀴를 재건하고 싶지 않습니다. 데이터베이스를 스크립트하고 한 버전에서 다음 버전에서 다음 IE 001-Create-Tables.sql, 002-Alter-Column.sql 등으로 업데이트하도록 스크립트를 작성하고 싶습니다.

내가 원하는 것은 데이터베이스를 살펴볼 간단한 도구 명령 줄 또는 MSBuild입니다. 데이터베이스가 어떤 버전에 있는지 확인하고 (일부 테이블 컨벤션 사용) 모든 스크립트를 현재 데이터베이스 버전보다 높은 폴더에서 실행합니다. 또한 오류가 실패/던지면 스크립트를 롤백하고 해당 시점에서 중지하는 도구를 원합니다.

그것이 제가 원하는 것이지만 내 자신의 SQL 스크립트를 작성하고 싶지만 컨벤션을 바꾸는 것은 마음에 들지 않습니다. 또한 너무 많이 필요하지 않기 때문에 도구가 무료 또는 오픈 소스가되기를 원합니다. 내 프로젝트가 C#이므로 도구를 .NET에 내장하는 것을 선호합니다.

도움이 되었습니까?

해결책 7

좋아, 나는 내가 찾은 옵션이 마음에 들지 않았다. 스크립트를 만들 수있는 좋은 도구를 찾았지만 데이터베이스에서 버전을 추적하고 새 스크립트를 실행하는 것은 없습니다. 어쨌든 나는 계속해서 일을 끝내기 위해 나만의 오픈 소스 도구를 굴 렸습니다. 사용하려면 CodePlex에서 호출되는 경우 다운로드 할 수 있습니다. KISSDB. 나는 또한 내 블로그에서 그것에 대한 블로그 게시물을 던졌습니다. blog.runxc

다른 팁

당신은 보셨습니까? dbdiff를 열어줍니다 아직? 시작하기에 좋은 곳일 수 있습니다.

오픈 소스에 대한 마음을 바꾸면 Red Gate의 SQL 비교 IMO로가는 길입니다.

dbdeploy.net을 사용해보십시오

http://sourceforge.net/projects/dbdeploy-net/

꽤 흥미로운 프로젝트가 있습니다 sqlrunner Sourceforge에서 -C#이고 .NET입니다. 과거 "Pre-Alpha":-)

나는 그것을 직접 사용하지 않았지만 여전히 - 꽤 좋아 보인다, IMHO.

마크

이것은 단순하고 단순한 어려운 문제입니다. 다른 답변에 언급 된 도구는 확실히 도움이 될 수 있지만, 여전히 많은 일을해야합니다.

실제로 스키마에 각 변경 스크립트에 대한 ID를 저장하는 테이블이 있습니다 (이슈/버그 추적 시스템의 케이스 번호와 일치 함). 각 변경 스크립트의 끝에서 ID를 해당 테이블에 삽입합니다. 데이터베이스의 특정 인스턴스에서 수행 된 작업을 확인하기 위해 확인하는 별도의 스크립트가 있습니다. 아직 실행되지 않은 각 스크립트를 실행하는 것이 가능하지만, 문제가 발생할 경우 변경 스크립트를 수동으로 실행하고 싶습니다.

특히 많은 스키마 변경에는 일종의 데이터 마이그레이션이 필요하기 때문에 롤백은 거의 불가능할 수 있습니다. 스키마의 변경 사항이있는 모범 사례는 뒤로 호환되는 것입니다. 열이나 테이블의 이름을 바꾸지 마십시오 (적어도 처음에는). 사물 만 추가하고 모든 새로운 추가를 무효화 할 수있게하십시오. 롤백 스크립트는 무언가가 옳지 않다는 것을 깨달았다면 단순히 새로운 것들을 제거합니다. 물론 사용되지 않은 기존 열과 테이블로 끝나기 때문에 현재 릴리스가 안정적으로 간주 된 후 실행되는 두 번째 스크립트를 작성하여 오래된 물건을 제거합니다.

나는 당신이 모든 스크립트를 직접 작성하고 싶습니다. SQL Server 2005 표제도 유틸리티 그것은 당신에게 많은 유연성을 줄 것입니다. 일부 사용 예제를 찾을 수 있습니다 여기

폴더에 주어진 버전에 대한 모든 스크립트가있는 경우 해당 폴더에 배치하면 배치 파일로이를 실행할 수 있습니다.

for %%X in (*.SQL) do SQLCMD -S <SERVER_NAME> -d <DATABASE_NAME> -E -I -i "%%X"  >> ResultBatch.txt

죄송합니다. 어디에서 왔는지 기억이 나지 않거나 신용을 줄 것입니다.

우리는 개발자에게 데이터베이스 변경 스크립트를 전복으로 확인하도록합니다. 모든 스크립트는 반복 가능하므로 오류없이 여러 번 실행할 수 있습니다. 또한 변경 스크립트를 연결하여 항목 또는 버그 ID를 발행하여 필요한 경우 변경 세트를 보류 할 수 있습니다. 그런 다음 모든 변경 사항이 적절하게 정렬 된 단일 SQL 스크립트 파일을 시작하는 자동 빌드 프로세스가 있습니다. 그런 다음이 단일 파일은 테스트, QA 및 생산 환경의 변경 사항을 홍보하는 데 사용됩니다. 우리는 이것이 엔터프라이즈 개발자와 가장 좋은 방법이라고 생각합니다. 우리가 어떻게하는지에 대한 자세한 내용 여기 귀하의 의견은 감사하겠습니다.

Liquibase를 사용하십시오. 그래도 Java입니다.

예, 선택한 SQL 변형에 마이그레이션 스크립트를 작성할 수 있습니다.

그것은 많은 사람들이 잘 테스트하고 사용됩니다.

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