문제

기존 데이터베이스에 대한 일부 스키마 변경 사항을 작업 중입니다.

Dev 사본을 얻기 위해 데이터베이스를 백업하고 변경했습니다. 단일 트랜잭션에서 프로덕션 머신의 변경 사항을 마이그레이션하기 위해 단일 롤 스크립트를 만들 것입니다.

배포 문제가 발생하는 롤백 스크립트를 만들기위한 모범 사례가 있습니까? 다음 패턴을 사용하여 직접 작성하기 전에 다음과 같습니다.

  • 새로운 제약과 색인을 삭제하십시오
  • 테이블 변경 새 열을 제거합니다
  • 드롭 추가 테이블
  • 거래를 커밋합니다

더 나은 접근 방식이 있습니까?

도움이 되었습니까?

해결책

그것은 기본적으로, 나는 당신의 접근 방식을 제외하고는 추가 할 것이 많다고 생각하지 않습니다. 이것이 우리가 회사에서 수행하는 방식이며, 개발자는 스크립트와 롤백 스크립트를 작성하는 책임이 있으며, 초기 변경이 적용되기 전에 동일한 상태로 DB를 남겨 둘 책임이 있습니다. 그런 다음 DBA는 프로덕션에서 실행됩니다. 문제가 있으면 롤백 스크립트를 실행하고 모든 것이 정상으로 돌아갑니다. 종속성과 객체를 변경하는 순서를 명심하고 롤백 스크립트를 뒤로 만듭니다.

다른 팁

당신은 다섯 번째 단계를 놓치고 있습니다

  • 새로운 제약과 색인을 삭제하십시오
  • 테이블 변경 새 열을 제거합니다
  • 드롭 추가 테이블
  • 거래를 커밋합니다
  • 제작에서 실행하기 전에 대본에서 지옥을 테스트하십시오.

보다 효율적인 접근 방식은 변경 사항이 발생할 때 변경 사항을 등록하는 것입니다. ROR 마이그레이션 하다. 각 DB 변경에 대해 변경 사항을 적용하고 다시 롤백하는 스크립트를 만듭니다 (물론 선택할 때). 그런 다음 코드와 마찬가지로 해당 스크립트가 버전을 제어 할 수 있습니다.

또한 데이터베이스에서 버전 번호를 유지하면 버전 번호로 각 스크립트를 식별하고 수행 된 작업에 따라 데이터베이스의 버전 번호를 늘리거나 줄여서 조금 더 자동화 할 수 있습니다.

비교적 작은 데이터베이스 인 경우 업그레이드를 적용하기 전에 백업을 만듭니다. 모든 것이 건초 와이어가되면 복원을합니다.

그것이 실시되고 새로운 데이터가 입력되면 어쨌든 실제로 롤백 할 수는 없습니다. 문제를 해결하면됩니다.

Redgate의 SQL 비교와 같은 도구를 사용하는 경우 두 데이터베이스의 비교를 모두 실행하고 두 가지 방법을 모두 사용하여 필요한 스크립트를 만들 수 있습니다. Dev to Prod 스크립트에는 변경 사항이 변경되며 PRD To Dev 스크립트는 Orginal Production 데이터베이스 상태로 돌아갑니다. 이렇게하면 어느 스크립트에서도 잊지 못합니다.

SQL Server 2005 또는 새로운 경우 데이터베이스 스냅 샷을 만들 수도있어 언제든지 해당 상태로 돌아갈 수 있습니다. 자세한 내용은이 페이지를 참조하십시오.

http://msdn.microsoft.com/en-us/library/ms175158.aspx

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