2014-09-15 1 views
1

을 참조하는 모든 상품 우리는 다음과 같은 SSDT 프로젝트 구조가 있습니다SQL 서버 : DacPac 다른 SSDT 프로젝트

DBCore 프로젝트 : 독점 SQL 서버 에디션이 아닌 모든 객체를 포함합니다.

DBStandardEdition 프로젝트 : 모든 표준 에디션 특정 개체를 포함합니다.

DBStandardition 프로젝트는 "동일한 데이터베이스"옵션을 사용하여 DBCore 프로젝트를 참조합니다.

DBStandardEdition 프로젝트를 Visual Studio를 통해 직접 내 데모 서버에 게시하면 모든 것이 작동합니다. 모든 표준 판 관련 오브젝트가 올바르게 작성됩니다.

Visual Studio의 스키마 비교 도구를 사용하여 데모 서버의 데이터베이스를 내 dacpac 파일과 비교할 때이 도구는 DBStandardEdition 프로젝트에서 정의한 모든 개체를 삭제하려고합니다. DacServices - Class (DacServices.Deploy)를 사용하여 dacpac 파일을 게시하는 프로그램도 있습니다. 이 프로그램은 실제로 내 DBStandardEdition.dacpac 파일에 정의 된 모든 것을 삭제합니다.

내가 여기서 뭔가 잘못하고있는 것입니까, 아니면 버그입니까?

업데이트 프로젝트 설정에서 문제가 있음을 확인했습니다. 모든 databaseprojects에 대해 "Build output file name"을 같은 값으로 설정했습니다. 이것을 변경 한 후에, Visual Studio는 DBStandardEdition \ Bin \ Release 폴더에 두 개의 DacPac - Files를 생성합니다. DBCore.dacpac 및 DBStandardEdition.dacpac. 이제 Visual Studio의 비교 도구를 사용하여 DBStandardEdition.dacpac을 내 데이터베이스와 비교하고 "복합 개체 포함 (데이터베이스 대상 만)"옵션을 사용하도록 설정합니다.) 옵션이 모두 좋았습니다. DBCore 프로젝트에 새로 추가 된 오브젝트는 "추가"로 나열되며, 내 DBStandardEdition 프로젝트의 모든 오브젝트는 여전히 존재합니다. Deployoption "Include composite objects ..."를 활성화하면 모든 것이 잘 전개됩니다.

답변

0

스키마 비교 옵션에서 "복합 개체 포함 (데이터베이스 대상 만)"옵션을 활성화해야합니다. 이 옵션은 기본적으로 해제되어 있으며 참조 된 개체가 비교 대상에서 제외되고 있음을 의미합니다.

+0

감사합니다. 이제 스키마 비교 도구에서 작동합니다! 그러나 우리는 이미 DacDeployOptions에서이 옵션을 true로 설정했습니다. DacService.Deploy Method에 매개 변수로 제공하는 클래스입니다. 나는이 주제 [여기] (http://stackoverflow.com/questions/18596402/dacpac-not-including-composite-objects)에서 또 다른 게시물을 찾았지만, 옳지 않은 것 같아, 나는 모른다. . – Weissvonnix

+1

몇 차례 내 질문을 업데이트했습니다. 방금 배포 방법에 대한 올바른 옵션 - 객체를 제공하지 않았습니다. 고맙다! – Weissvonnix