무엇을 배포할 수 있는 쉬운 방법을 데이터베이스에 변경을 사용하여 SQL Server?

StackOverflow https://stackoverflow.com/questions/1948220

문제

소프트웨어 시스템 작업에서는 의료 결제 시스템,대량의 데이터와 테이블 데이터,그리고 저장합니다.

었다 기사를 읽"12 단계 더 나은 코드"그 Joel 테스트#2 국:을 만들 수 있습니 빌드에서 하나의 단계는 무엇입니까?

지금 내가 궁금해 하는데,이 뜻은 배포를 구축(그래서는 고객 업데이트할 수 있습니다 그들의 배포).

이제는 주요 문제는 나에 걸쳐 실행은,당신은 어떻게 하나 단계 데이터베이스의 업데이트?

현재 시간에,변경 사항이 있을 경우에 데이터베이스에 대한 모든 변경 사항을 기록하고 추가되는 데이터베이스로 업데이트 스크립트는 버전 번호를 부착할 때에 배포하는 고객의 건축이 생성됩니다.

더 간단한 방법이 있습니까?어떤 스크립트나 프로 밖에는"전과 후"보 데이터베이스에서 스키마 생성 업데이트 스크립트는 다음과 같 언급했?

또는 이 방법 모두에게는 내가 찾는 것이 믿기 어려운,그러나 그럴듯하다.

자동화된 시스템을 줄이고 오류,배포 속도를 구축 시간을 상당히,나는 것에 관심을 알고 그렇게 하는 방법.

도움이 되었습니까?

해결책

거기에 다양한 복잡성의 수준을 통해 이동할 수 있습니다:

  • 이 있는 경우 업데이트하는 스크립트를 만들 수동으로,그리고 대하는 방법에 쉽게 적용들을 여러 서버 확인 SSW SQL 배포 여 SSW 컨설팅을 제공합니다.그것은 처리할 수 있는 시나리오는 매우 좋

  • 는 경우에는 더 많은 데이터베이스의 차이점에 접근,다음 빨간색 문의 SQL 비교 (이미 언급한다)및 SQL Packager 인.할 수 있습 차이는 데이터베이스 간의 이전 및 새로운 변경 사항을 적용합에서 좋은 패키지-EXE 또는 C#프로젝트

  • 하려는 경우 실제,end-to-end,잘 생각 접근 방식(의 비트와 함께 학습 곡선),체크 아웃 Innovartis'DBGhost 접근 방법이다.그것은 전체 방법론/기법을 처리하는 방법 데이터베이스를 개발하고 증분 업데이트됩니다.그것은 매우 강력하고 매우 유망한-그러나 그것의 비트는 모두 접근 방식:하나 당신이 그것으로 사고 그것을 사용하는 end-to-end,또는 당신은하지 않는

도움이 되기를 바랍니다.

다른 팁

Redgate에는 도구가 있습니다 SQL 비교 데이터베이스를 비교하고 동기화 할 스크립트를 생성합니다. 우리는 그것을 사용했지만 더 최근에는 당신이 설명하는 것과 동일한 프로세스를 사용하여 수동 스크립트로 전환했습니다. 고유 한 버전 번호를 가진 매뉴얼, 미세한 스크립트를 사용하여 잘 작동했습니다.

업그레이드 스크립트를 단위 테스트에 통합하여 지속적인 통합의 일부로 코드와 함께 테스트를받습니다. 나는 이것이 "한 단계로 빌드를 만드는 데 중요한 부분이라고 생각합니다.

이 블로그 게시물을 살펴보십시오. 몇 가지 프로젝트에서 DB 버전 의이 유형의 단일 업데이트 스크립트를 사용했으며 매우 잘 작동합니다.

http://blogs.msdn.com/danhardan/archive/2007/03/30/database-change-scripts-mambo-style.aspx

워크 플로에 맞게 워크 플로를 약간 조정하거나 템플릿 .SQL 파일을 업데이트해야하지만 전반적으로 아이디어가 DB 배포에 대한 확실한 접근 방식이라는 것을 알았습니다.

편집 :이 기술을 어떻게 사용했는지 자세히 설명하기 위해. 기본적으로 모든 DB 개정 스크립트가 소스 제어에 들어갑니다. 그런 다음 빌드 박스의 게시물 빌드 단계 로서이 맘보 도구는 스크립트 디렉토리에서 실행되며 스크립트를 트랜잭션이 포함하는 단일 스크립트로 롤백하여 롤백이 잘못되면 롤백을 허용합니다. 그런 다음 설치 프로그램은 기존 데이터베이스에 대해 실행될 .SQL 스크립트를 찾을만큼 스마트합니다.

이것이 작동하는 이유는 롤업 스크립트 확인이 개별 스크립트 인 각 조각이 이미 원하는 데이터베이스에 대해 실행 되었기 때문입니다. 결과적으로 최신 스크립트 만 실행됩니다. 이에 대한 경고는 스크립트를 소스 컨트롤에 체크하고 배포되면 추적 테이블이 스크립트가 실행되었다고 생각하기 때문에 편집 할 수 없다는 것입니다. 스크립트 폴더에 다른 스크립트를 추가하기 때문에 작업 한 프로젝트에 좋습니다.

잘만되면 나는 그 과정을 이해하기에 충분히 설명하고있다. 실제로는 복잡하지 않으며 접근 방식이 프로젝트에 적용 할 수있는 경우 매우 유용 할 수 있습니다.

"이제 궁금한 점이 있었는데, 이것이 배포 빌드를 의미합니까 (고객이 배포를 업데이트 할 수 있도록)에 대한 답변에 대한 답변?

Joel Test #2가 배포를 Prod로 이동하는 것이 아니라 개발 중 연속체 인터레이드를위한 것이라고 생각합니다.

PROD의 데이터베이스 변경과 관련하여 트랜잭션 롤아웃의 일부로 또는 데이터베이스가 백업 된 후 스크립트를 통해 수행해야합니다. 롤아웃에서 무언가가 실패하면 항상 다시 탐색 할 수 있기를 원합니다.

데이터베이스를 서로에 의존하는 패치 세트로 개발하십시오. 그런 다음과 같은 도구를 사용하십시오 https://github.com/luvdasun/sqlpatch 배포를 위해 SQL 파일을 빌드합니다.

SQLPatch는 패치를 올바른 순서로 정렬하고 동일한 스크립트가 두 번 실행 되더라도 모든 패치가 정확히 한 번 실행되도록합니다.

이 전략은 CI/CD 환경에서 데이터베이스를 배포하는 데 사용할 수 있습니다. 이로 인해 배포는 분기로 밀어 붙는 것만 큼 쉽게 배치됩니다.

데이터베이스를 동기화하는 응용 프로그램이 있지만, 당신이하고있는 일을하는 것이 더 나은 것 같습니다. 데이터베이스를 업데이트하기 위해 스크립트를 작성하면 오류를 처리하고 트랜잭션을 실행할 수 있습니다. 이것은 모범 사례로 간주됩니다.

Microsoft 자체가 소개되었습니다 데이터 계층 응용 프로그램 데이터베이스를 배포하고 업그레이드하기위한 무료 옵션으로 SQL 2012에서

생산 배포를 포함 하여이 도구를 사용하고 좋아합니다.

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