2009-10-09 9 views
1

GDR 버전 9.1.40413.00과 함께 Visual Studio Team System 2008을 사용하고 있으며 단일 DB 프로젝트를 여러 데이터베이스에 배포하는 문제를 해결하려고합니다. 예를 들어 Performance.DB 프로젝트가 있다면 Performance, Performance2, Performance3 등의 데이터베이스를 배포하고 싶습니다.GDR - 하나의 프로젝트로 여러 데이터베이스 대상 배포

그러나 db 프로젝트의 속성으로 이동하면 1 개의 대상 만 배포 할 수 있습니다. 이 둘 사이에 방법이 있을까요? 나는 또한 각각의 성능 데이터베이스에 고유 한 sqlcmdvars 파일을 가지고 있으므로 고유 한 mdf 및 ldf 파일을 갖게됩니다.

프로젝트의 속성에서 수행 할 수없는 경우 배포 할 각 데이터베이스에 대해 예를 들어 다음 명령을 여러 번 실행하는 배치 스크립트를 만드는 방법이 있습니다. 계획?

"D:\Program Files\Microsoft Visual Studio 9.0\VSTSDB\Deploy\vsdbcmd.exe" /ManifestFile:"D:\Performance\Test\Binaries\Release\Performance.DB.deploymanifest" /a:Deploy /cs:"Data Source=.\SQLEXPRESS;Integrated Security=True;Pooling=False" /p:GenerateDropsIfNotInProject=True /p:BlockIncrementalDeploymentIfDataLoss=False /p:TargetDatabase=Performance /p:SqlCommandVariablesFile="D:\Performance\Test\Binaries\Release\Performance.sqlcmdvars" /p:IgnorePermissions=True /p:GenerateDeployStateChecks=False /dd:+ 

답변

0

부분적인 데이터베이스 프로젝트를 시도해 볼 수 있습니다.

다음은 예 http://blogs.msdn.com/gertd/archive/2008/10/05/partial-projects.aspx입니다.

전체 프로젝트 규모에서 그리 좋지 않을 수도 있지만 코드를 한 데이터베이스 프로젝트에서 다른 데이터베이스 프로젝트로 공유하는 데 유용합니다.

코어 퍼포먼스 데이터베이스 프로젝트를 사용하면 "기본"프로젝트가되고 다른 모든 프로젝트는이 프로젝트에서 파생됩니다.

0

나는 최근에 유사한 "자식"데이터베이스에 배포되는 "기본"개체 집합과 함께 하나의 데이터베이스 프로젝트를 원했던 비슷한 상황에 처했습니다. 이 문제를 해결하기 위해 우리 팀은 복합 프로젝트 (http://msdn.microsoft.com/en-us/library/dd193415.aspx)를 사용하여 기본 및 하위 데이터베이스를 정의한 다음 여러 빌드 구성을 설정했습니다. 각 빌드 구성에서는 다른 대상 인 sqlcmdvars 등을 지정할 수 있으며 기본적으로 한 번에 하나의 데이터베이스에만 배포되도록 빌드를 조정합니다.

성능 데이터베이스를 모두 배포하려면 각 성능 데이터베이스를 변경하거나 TFS에/유닛 테스트를 배포하는 경우 각 빌드 구성에 대해 서로 다른 .config 파일로 여러 테스트 설정 파일을 만듭니다. 너는 가지고있다.

0

* .dbproj 파일에서 일부 MSBUILD 해킹으로 AfterDeploy 이벤트에서 두 번째/n 번 호출하는 프로젝트를 만들었으므로 단일 'Deploy'명령을 사용하여 여러 데이터베이스에 배포 할 수 있습니다.

<PropertyGroup> 
    <TargetDatabase>Performance</TargetDatabase> 
    <TargetDatabase Condition="$(SecondDatabase)!=''">$(SecondDatabase)</TargetDatabase> 
    </PropertyGroup> 


<Target Name="AfterDeploy"> 
    <MSBuild Condition="$(SecondDatabase)==''" Targets="Deploy" Properties="SecondDatabase=Performance2" Projects="$(ProjectPath)" /> 
    <MSBuild Condition="$(SecondDatabase)==''" Targets="Deploy" Properties="SecondDatabase=Performance3" Projects="$(ProjectPath)" /> 
    </Target>