2016-09-05 3 views

답변

3

내가 본 가장 좋은 방법은 파일 당 하나의 테이블을 병합하고 병합 문장을 사후 배포 스크립트로 가져 오는 것입니다. r imports.

당신은 버전 기록과 쉽게 비교 가능한 데이터를 얻고 sp_generate_merge를 사용하면 정말 간단 해집니다. 에드

+0

sk보다. https://github.com/readyroll/generate-sql-merge/blob/master/master.dbo.sp_generate_merge.sql의 'sp_generate_merge'입니까? – beewest

+0

예, 기본 키로 주문하는 것을 포함하는 홍보가 있습니다. 정말 유용합니다. –

+0

에드에 관해 알려 줘서 고마워요! 나는 앞서 가서 병합 했으므로 proc을 얻기 위해 @beewest가 언급 한 링크를 사용할 수있다. –

3

당신이 불행하게도이 현재 하나가 아닌, 사전/사후 배포 스크립트의 사용을 포함하지 않는 참조를 처리 할 수 ​​SSDT에서 솔루션을 찾고 있다면.

하지만 현재는 one of the most requested features in SSDT이므로 장래에 어느 정도 시간이 걸릴 가능성이 있습니다.

나는 에드 언급 한 sp_generate_merge OSS 유틸리티의 메인테이너 오전과 레드 게이트에서 우리는 다음과 같은 경우에, 우리의 고객에게 오프라인 방법으로 참조 데이터 처리에이 방법을 권장합니다

  • 경우] 테이블 당 하나의 파일 방식으로 여러 개발자의 동시 변경 사항을 분기/병합 할 수 있기 때문에 테이블 내의 데이터가 매우 자주 변경됩니다.
  • 테이블의 데이터에 응용 프로그램 설정과 같은 환경 관련 값이있는 경우 이 방법을 사용하면 SQLCMD 변수 및을 사용할 수 있습니다.

오프라인 접근 방식은 문제가 될 수 있습니다 :

  • MERGE 문의 비 결정론 : 실제로 대상 환경에 대해 배포를 실행하기 전에, 의지를 변경 알고 어려울 수 있습니다 적용됩니다 (있는 경우). 최악의 시나리오 인 경우 documented issues in MERGE
  • 워크 플로는 유틸리티를 실행하고 출력을 원본 파일에 다시 붙여 넣기해야하므로 데이터를 편집하는 가장 자연스러운 방법은 아닙니다. 파일을 직접 편집하는 방법은 대안이지만 대용량의 참조 데이터가있는 경우 특히 사용자에게 친숙하지 않습니다.
  • 참조 테이블에서 스키마와 데이터 모두에 대한 조정을 변경하는 것은 어려울 수 있습니다. SSDT 스키마 변경을 적용 할 책임이 있습니다. 예를 들어, 새로운 NOT NULL 열을 기본값없이 추가하려는 경우입니다.

또 다른 해결책은 우리의 SSDT-대안 ReadyRoll 데이터베이스 프로젝트에 의해 지원되는 온라인 접근, 다음이 포함됩니다. 데이터 변경 도구로 생성 된 동기화 스크립트 (즉, MERGE 대신 INSERT, UPDATE, DELETE 문 대신)를 스키마 변경과 함께 데이터베이스에서 직접 편집하고 프로젝트로 가져올 수 있습니다.

ReadyRoll documentation에서 오프라인 및 온라인 접근 방식이 어떻게 다른지 더 자세히 읽을 수 있습니다.

관련 문제