GDR - развертывание нескольких целей базы данных с одним проектом - PullRequest
1 голос
/ 09 октября 2009

Я использую Visual Studio Team System 2008 с версией GDR 9.1.40413.00 и пытаюсь решить проблему развертывания одного проекта БД в нескольких базах данных. Например, если у меня есть проект Performance.DB, я бы хотел развернуть базы данных, называемые Performance, Performance2, Performance3 и т. Д.

Однако, если вы перейдете к свойствам проекта базы данных, у вас может быть только 1 цель развертывания. Есть ли способ обойти это? Я также хотел бы, чтобы каждая база данных Performance имела свой собственный файл 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:+

Ответы [ 3 ]

0 голосов
/ 17 апреля 2012

Недавно я столкнулся с подобной ситуацией, когда мне захотелось создать один проект базы данных с набором «базовых» объектов, которые будут развернуты в нескольких «дочерних» базах данных. Чтобы решить эту проблему, наша команда пошла с составными проектами (http://msdn.microsoft.com/en-us/library/dd193415.aspx), чтобы определить нашу базовую и дочернюю базы данных, а затем настроила несколько конфигураций сборки. Каждая конфигурация сборки позволяет вам указывать свою цель, sqlcmdvars и т. Д. И в основном настраивать сборка для развертывания только в одной базе данных одновременно.

Это означает, что для развертывания всех ваших баз данных Performance вам потребуется изменить конфигурации сборки для каждой из них, или, если вы развертываете / модульное тестирование в TFS, создайте несколько файлов настроек тестирования с разными файлами .config для каждой конфигурации сборки, которую вы есть.

0 голосов
/ 19 апреля 2012

После некоторого взлома MSBUILD в файле * .dbproj я создал проект, который просто вызывает себя в секунду / n раз в событии AfterDeploy, поэтому вы можете использовать одну команду «Развернуть» для развертывания в нескольких базах данных:

 <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>
0 голосов
/ 11 октября 2009

Вы можете попытаться посмотреть на частичные проекты базы данных.

Вот пример http://blogs.msdn.com/gertd/archive/2008/10/05/partial-projects.aspx.

Они полезны для совместного использования кода из одного проекта базы данных в другой, хотя, возможно, он не так хорош в полном масштабе проекта.

Использование этого базового проекта базы данных Perfomance будет "базовым" проектом, и все остальные будут исходить из этого.

...