Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как адаптировать свойства базы данных к конкретным целевым средам в рамках процесса развертывания.
Замечание
В этом разделе предполагается, что вы развертываете проект базы данных Visual Studio 2010 с помощью MSBuild.exe и VSDBCMD.exe. Дополнительные сведения о том, почему вы можете выбрать этот подход, смотрите в разделах "Веб-развертывание в Enterprise" и "Развертывание проектов баз данных".
При развертывании проекта базы данных в нескольких назначениях часто требуется настроить свойства развертывания базы данных для каждой целевой среды. Например, в тестовых средах обычно база данных восстанавливается при каждом развертывании, в то время как в промежуточных или производственных средах для сохранения данных вы, вероятно, будете делать инкрементные обновления.
В проекте базы данных Visual Studio 2010 параметры развертывания содержатся в файле конфигурации развертывания (.sqldeployment). В этом разделе показано, как создать файлы конфигурации развертывания для конкретной среды и указать тот, который вы хотите использовать в качестве параметра VSDBCMD.
Этот раздел является частью серии учебников, основанных на требованиях к развертыванию предприятия вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения — решение Contact Manager— для представления веб-приложения с реалистичным уровнем сложности, включая приложение MVC 3 ASP.NET MVC 3, службу Windows Communication Foundation (WCF) и проект базы данных.
Метод развертывания в центре этих учебников основан на подходе к разделенному файлу проекта, описанному в разделе "Общие сведения о файле проекта", в котором процесс сборки управляется двумя файлами проекта — одним из них содержит инструкции по сборке, которые применяются к каждой целевой среде, а также один из них содержит параметры сборки и развертывания для конкретной среды. Во время сборки файл проекта для конкретной среды объединяется в файл проекта, не зависящем от среды, чтобы сформировать полный набор инструкций по сборке.
Обзор задачи
В этом разделе предполагается, что:
- Вы используете подход к развертыванию решения с разделением файлов проекта, как описано в разделе "Общие сведения о файле проекта".
- Вы вызываете VSDBCMD из файла проекта для развертывания проекта базы данных, как описано в разделе "Общие сведения о процессе сборки".
Чтобы создать систему развертывания, которая поддерживает различные свойства развертывания базы данных между целевыми средами, вам потребуется:
- Создайте файл конфигурации развертывания (.sqldeployment) для каждой целевой среды.
- Создайте команду VSDBCMD, указывающую файл конфигурации развертывания в качестве коммутатора командной строки.
- Параметризируйте команду VSDBCMD в файле проекта системы сборки (MSBuild), чтобы параметры VSDBCMD соответствовали целевой среде.
В этом разделе показано, как выполнять каждую из этих процедур.
Создание файлов конфигурации развертывания, специфичных для среды
По умолчанию проект базы данных содержит один файл конфигурации развертывания с именем Database.sqldeployment. Если открыть этот файл в Visual Studio 2010, вы увидите различные варианты развертывания, доступные для вас:
- Сравнение развертываний. Это позволяет выбрать, следует ли использовать параметры сортировки базы данных проекта ( исходная сортировка) или параметры сортировки базы данных целевого сервера ( целевая сортировка). В большинстве случаев при развертывании в среде разработки или тестирования необходимо использовать параметры сортировки источников. При развертывании в промежуточной или продуктовой среде обычно требуется оставить целевую сортировку без изменений, чтобы избежать проблем с взаимодействием.
- Развертывание свойств базы данных. Это позволяет выбрать, следует ли применять свойства базы данных, как определено в файле Database.sqlsettings . При первом развертывании базы данных следует настроить её свойства. Если вы обновляете существующую базу данных, свойства уже должны быть на месте, и вам не нужно снова развертывать их.
- Всегда повторно создайте базу данных. Это позволяет выбрать, следует ли повторно создавать целевую базу данных при каждом развертывании или вносить изменения по частям, чтобы обновить целевую базу данных в соответствии с вашей схемой. При повторном создании базы данных вы потеряете все данные в существующей базе данных. Как правило, необходимо установить значение false для развертываний в промежуточных или рабочих средах.
- Блокировать добавочное развертывание, если может возникнуть потеря данных. Это позволяет выбрать, следует ли остановить развертывание, если изменение схемы базы данных приведет к потере данных. Обычно это значение устанавливается в true для развертывания в рабочей среде, чтобы предоставить вам возможность вмешиваться и защищать любые важные данные. Если вы установили для параметра Always re-create database значение false, этот параметр не будет иметь эффекта.
- Выполнение развертывания в однопользовательском режиме. Обычно это не проблема в средах разработки или тестирования. Однако обычно это значение следует устанавливать в true при развертываниях в промежуточной или рабочей среде. Это предотвращает внесение изменений в базу данных пользователями во время развертывания.
- Резервное копирование базы данных перед развертыванием. Обычно вы устанавливаете это на true, когда развертываете в рабочей среде, чтобы предотвратить потерю данных. Вы также можете задать значение true при развертывании в промежуточной среде, если промежуточная база данных содержит много данных.
- Создайте инструкции DROP для объектов, которые находятся в целевой базе данных, но не находятся в проекте базы данных. В большинстве случаев это неотъемлемая и важная часть внесения добавочных изменений в базу данных. Если вы установили для параметра Always re-create database значение false, этот параметр не будет иметь эффекта.
- Не используйте инструкции ALTER ASSEMBLY для обновления типов CLR. Этот параметр определяет, как SQL Server должен обновлять типы среды CLR до более новых версий сборок. Это должно быть установлено в false в большинстве сценариев.
В этой таблице показаны типичные параметры развертывания для разных целевых сред. Однако параметры могут отличаться в зависимости от ваших точных требований.
| Разработчик и тестирование | Промежуточная/интеграция | Производство | |
|---|---|---|---|
| Сопоставление развертываний | Исходный материал | Цель | Цель |
| Развертывание свойств базы данных | True | Только первый раз | Только первый раз |
| Всегда повторно создавать базу данных | True | Неправда | Неправда |
| Блокировать добавочное развертывание, если может возникнуть потеря данных | Неправда | Может быть | True |
| Выполнение скрипта развертывания в однопользовательском режиме | Неправда | True | True |
| Резервное копирование базы данных перед развертыванием | Неправда | Может быть | True |
| Создание инструкций DROP для объектов, которые находятся в целевой базе данных, но не находятся в проекте базы данных. | Неправда | True | True |
| Не используйте операторы ALTER ASSEMBLY для обновления типов CLR | Неправда | Неправда | Неправда |
Замечание
Дополнительные сведения о свойствах развертывания базы данных и параметров среды см. в разделе "Общие сведения о параметрах проекта базы данных", "Практическое руководство. Настройка свойств для сведений о развертывании, сборка и развертывание базы данных в изолированной среде разработки" и " Сборка и развертывание баз данных в промежуточной или рабочей среде".
Чтобы обеспечить развертывание проекта базы данных в нескольких местах назначения, необходимо создать файл конфигурации развертывания для каждой целевой среды.
Создание файла конфигурации для конкретной среды
В Visual Studio 2010 в окне обозревателя решений щелкните правой кнопкой мыши проект базы данных и выберите пункт "Свойства".
На странице свойств проекта базы данных на вкладке Развертывание в строке файла конфигурации развертывания нажмите Создать.
В диалоговом окне "Новый файл конфигурации развертывания " укажите понятное имя файла (например, TestEnvironment.sqldeployment), а затем нажмите кнопку "Сохранить".
На странице [Filename].sqldeployment задайте свойства развертывания в соответствии с требованиями целевой среды, а затем сохраните файл.
Обратите внимание, что новый файл добавляется в папку "Свойства" в проекте базы данных.
Указание файла конфигурации развертывания в VSDBCMD
При использовании конфигураций решений (например, отладки и выпуска) в Visual Studio 2010 можно связать файл конфигурации развертывания с каждой конфигурацией. При сборке конкретной конфигурации процесс сборки создает файл манифеста развертывания для конкретной конфигурации, указывающий на файл конфигурации конкретной конфигурации. Однако одной из основных целей подхода к развертыванию, описанному в этих руководствах, является предоставление людям возможности управлять процессом развертывания без использования конфигураций решений Visual Studio 2010 и решений. В этом подходе конфигурация решения одинакова независимо от целевой среды развертывания. Чтобы настроить развертывание базы данных в определенной целевой среде, можно использовать параметры командной строки VSDBCMD, чтобы указать файл конфигурации развертывания.
Чтобы указать файл конфигурации развертывания в VSDBCMD, используйте параметр p:/DeploymentConfigurationFile и укажите полный путь к файлу. Это переопределит файл конфигурации развертывания, который определён в манифесте развертывания. Например, эту команду VSDBCMD можно использовать для развертывания базы данных ContactManager в тестовой среде:
vsdbcmd.exe /a:Deploy
/manifest:"…\ContactManager.Database.deploymanifest"
/cs:"Data Source=TESTDB1;Integrated Security=true"
/p:TargetDatabase=ContactManager
/p:DeploymentConfigurationFile=
"…\ContactManager.Database_TestEnvironment.sqldeployment"
/dd+
/script:"…\Publish-ContactManager-Db.sql"
Замечание
Обратите внимание, что процесс сборки может переименовать ваш файл .sqldeployment при копировании файла в каталог назначения.
Если вы используете переменные команды SQL в скриптах SQL перед развертыванием или после развертывания, вы можете использовать аналогичный подход для связывания файла sqlcmdvars для конкретной среды с развертыванием. В этом случае вы используете параметр p:/SqlCommandVariablesFile для идентификации файла .sqlcmdvars.
Выполнение команды VSDBCMD из файла проекта MSBuild
Вы можете вызвать команду VSDBCMD из файла проекта MSBuild с помощью задачи Exec в целевом объекте MSBuild. В его простейшей форме это будет выглядеть следующим образом:
<Target Name="DeployDatabase">
<PropertyGroup>
<_Cmd>
Add your VSDBCMD command here
</_Cmd>
</PropertyGroup>
<Exec Command="$(_Cmd)"/>
</Target>
- На практике, чтобы упростить чтение и повторное использование файлов проекта, необходимо создать свойства для хранения различных параметров командной строки. Это упрощает предоставление пользователям значений свойств в файле проекта для конкретной среды или переопределения значений по умолчанию из командной строки MSBuild. Если вы используете подход разделенного файла проекта, описанный в разделе "Общие сведения о файле проекта", необходимо разделить инструкции и свойства сборки между двумя файлами соответствующим образом:
- Параметры конкретной среды, такие как имя файла конфигурации развертывания, строка подключения к базе данных и имя целевой базы данных, должны перейти в файл проекта для конкретной среды.
- Целевой объект MSBuild, выполняющий команду VSDBCMD, вместе с любыми универсальными свойствами, такими как расположение исполняемого файла VSDBCMD, должен перейти в универсальный файл проекта.
Перед вызовом VSDBCMD необходимо также создать проект базы данных, чтобы файл DEPLOYmanifest был создан и готов к использованию. Полный пример этого подхода представлен в разделе "Общие сведения о процессе сборки", который описывает файлы проекта в примере решения Диспетчера контактов.
Conclusion
В этом разделе описано, как настроить свойства базы данных в разных целевых средах при развертывании проектов баз данных с помощью MSBuild и VSDBCMD. Этот подход полезен при развертывании проектов базы данных в рамках более крупных корпоративных решений. Эти решения часто развертываются в нескольких местах назначения, таких как изолированные среды разработки или тестирования, промежуточные платформы или платформы интеграции, а также рабочие или живые среды. Для каждой из этих целевых сред обычно требуется уникальный набор свойств развертывания базы данных.
Дальнейшее чтение
Дополнительные сведения о развертывании проектов баз данных с помощью VSDBCMD.exeсм. в разделе "Развертывание проектов баз данных". Дополнительные сведения об использовании пользовательских файлов проекта MSBuild для управления процессом развертывания см. в разделе "Общие сведения о файле проекта " и "Общие сведения о процессе сборки".
Эти статьи в MSDN содержат более общие рекомендации по развертыванию базы данных: