해결하려는 문제는 빌드 구성에 따라 다른 스크립트를 작성하는 것입니다. 오프라인 개발 및 단위 SQL 데이터베이스 프로젝트 : 빌드 구성에 따라 다른 스크립트 빌드
엔터프라이즈 버전이 연결된 서버시기에 대한 전망을 테스트 연결 링크 서버와
- 엔터프라이즈 버전 : 우리는이 개 SQL Server 인스턴스을 말해봐 LocalDB는 이러한 뷰를 로컬 테이블로 대체합니다.
이러한 연결된 서버보기 및 로컬 테이블에는 동일한 이름 및 필드 집합이 있습니다. 기본적으로 빌드에 포함되지 않습니다 (빌드 동작 = 없음). 대신 프로젝트 파일의 BeforeBuild 대상에 빌드에 포함됩니다.
그러나 문제는 우리가 처음 LocalDb에 대한 프로젝트를 빌드하고 엔터프라이즈 구성을위한 프로젝트를 빌드하려고하면 비주얼 스튜디오는 DB 모델을 캐시하고 있다는 점이다 - 비주얼 스튜디오 출력 오류 :<Target Name="BeforeBuild"> <ItemGroup Condition=" '$(Configuration)' == 'LocalDb'"> <Build Include="Local_Tables\*.sql" /> </ItemGroup> <ItemGroup Condition=" '$(Configuration)' != 'LocalDb' "> <Build Include="Linked_Server_Views\*.sql" /> </ItemGroup> </Target>
오류 : SQL71508 다음 모델에 이미 동일한 이름을 가진 요소가 있습니다.
솔루션을 닫거나 열 때 프로젝트를로드하고 프로젝트를 다시로드하면 Visual Studio에서 dbmdl 파일을 다시 만들고 오류없이 엔터프라이즈 구성이 빌드됩니다.
내 가정은 dbmdl 캐시를 새로 고치면 오류없이 원활하게 빌드됩니다.
열거 나 다시로드 SQL Server 데이터베이스 프로젝트를 비주얼 스튜디오 2012에서, 그것은 here 설명으로 직렬화 및 캐시 DB를 모델로 확장 dbmdl를 가진 파일을 생성
. dbmdl 파일 오락 비주얼 스튜디오의 순간에서
는 다음과 같은 출력 :
프로젝트를 다시로드하지 않고 프로젝트 XML 파일의 변경하지 않고 dbmdl 캐시를 새로 고침하려면 Visual Studio를 강제하는 방법Deserializing the project state for project 'MyProject.sqlproj'... Detecting file changes for project 'MyProject.sqlproj'... Deserialization has been completed for project 'MyProject.sqlproj'.
?
프로젝트 xml 파일의 BeforeBuild 또는 AfterBuild 대상에 명령을 배치하는 dbmdl 캐시를 새로 고치는 방법이 있습니까?
또는 문제의 전체적인 접근 방식이 잘못되어 빌드 구성에 따라 다른 스크립트를 빌드하는 또 다른 방법이 있습니까?
답장을 보내 주셔서 감사합니다. 나는 아직도 내 질문에 대한 해결책이 없다. 나는 다음 프로젝트를 위해 당신의 충고를 시도 할 것이다. 하지만 테이블/뷰 생성 생성을 Post-Deploy 스크립트로 옮기는 것보다는 다른 객체가 해당 테이블/뷰를 참조하기 때문에 빌드 중 오류가 발생합니다. –
글쎄, 기술적으로 프로젝트의 "로컬"뷰를 남겨 두어 모든 것이 빌드되도록 한 다음, 링크 된 서버에 대해서만 사용하도록 수정 된 포스트 배포 섹션을 추가하면됩니다. 나는 그것을 다루는 것이 최선의 방법이 아니라는 것에 동의하지만 그렇게한다면 그렇게 할 수 있습니다. –
복합 프로젝트를 사용할 때 또 다른 옵션이있을 수 있습니다. Jamie Thompson이 여기에 블로그를 올렸습니다. http://sqlblog.com/blogs/jamie_thomson/archive/2013/03/10/deployment-of-client-specific-database-code-using-ssdt.aspx –