Развертывание проектов баз данных

кто Джейсон Иванов

Скачать в формате PDF

Note

Во многих сценариях корпоративного развертывания требуется возможность публикации добавочных обновлений в развернутой базе данных. Альтернативой является повторное создание базы данных при каждом развертывании, что означает потерю всех данных в существующей базе данных. При работе с Visual Studio 2010 рекомендуется использовать VSDBCMD для добавочной публикации базы данных. Однако следующая версия Visual Studio и конвейер веб-публикаций (WPP) будут включать средства, поддерживающие добавочную публикацию напрямую.

Если открыть пример решения диспетчера контактов в Visual Studio 2010, вы увидите, что проект базы данных содержит папку свойств, содержащую четыре файла.

Вместе с файлом проекта (ContactManager. Database. dbproj в этом случае) эти файлы управляют различными аспектами процесса сборки и развертывания:

  • Файл Database. SQLCMDVARS предоставляет значения для всех переменных SQLCMD, используемых при развертывании проекта. Для каждой конфигурации решения (например, отладка и выпуск) можно указать другой SQLCMDVARS-файл.
  • Файл Database. sqldeployment предоставляет параметры, относящиеся к развертыванию, например, следует ли использовать параметры сортировки, определенные в проекте, или параметры сортировки целевого сервера, следует ли повторно создавать целевую базу данных каждый раз или просто внести изменения в существующую базу данных, чтобы она была актуальной и так далее. В каждой конфигурации решения можно указать другой SQLDEPLOYMENT-файл.
  • Файл Database. склпермиссионс — это XML-документ, который можно использовать для определения любых разрешений, которые необходимо добавить в целевую базу данных. Все конфигурации решений совместно используют один и тот же файл склпермиссионс.
  • В файле Database. sqlsettings указываются свойства уровня базы данных, используемые при создании базы данных, такие как параметры сортировки для использования, поведение операторов сравнения и т. д. Все конфигурации решений совместно используют один и тот же файл sqlsettings.

Стоит потратить немного времени, чтобы открыть эти файлы в Visual Studio и ознакомиться с содержимым.

При построении проекта базы данных процесс сборки создает два файла:

  • Схема базы данных (DBSCHEMA-файл). Это описывает схему базы данных, которую необходимо создать в формате XML.
  • Манифест развертывания (деплойманифест-файл). В нем содержатся все сведения, необходимые для создания и развертывания базы данных. Он ссылается на DBSCHEMA-файл вместе с другими ресурсами, такими как инструкции по развертыванию (SQLDEPLOYMENT-файл) и любые скрипты SQL, выполняемые перед развертыванием или после развертывания.

Это показывает связь между этими ресурсами:

Как видите, файл. sqlsettings и файл склпермиссионс являются входными данными для процесса сборки. Вместе с файлом проекта базы данных эти файлы используются для создания файла схемы базы данных. SQLDEPLOYMENT-файл и. SQLCMDVARS-файл проходят процесс сборки без изменений. Манифест развертывания указывает расположение схемы базы данных, файл sqldeployment, SQLCMDVARS-файл и все скрипты SQL, выполняемые перед развертыванием или после него.

Зачем использовать VSDBCMD для развертывания проекта базы данных?

Существует несколько различных подходов к развертыванию проектов баз данных. Однако не все они подходят для развертывания проекта базы данных на удаленных серверах в корпоративной среде. Рассмотрите, что нужно сделать с развертыванием проекта базы данных. В сценариях корпоративного развертывания, скорее всего, потребуется:

  • Возможность развертывания проекта базы данных из удаленного расположения.
  • Возможность выполнять добавочные обновления существующей базы данных.
  • Возможность включать скрипты, выполняемые перед развертыванием или сценарии, выполняемые после развертывания.
  • Возможность адаптации развертывания к нескольким конечным средам.
  • Возможность развертывания проекта базы данных в составе более крупного, обычно допускающего одношагового развертывания решения с одним шагом.

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

  • Функции развертывания можно использовать с типом проекта базы данных в Visual Studio 2010. При сборке и развертывании проекта базы данных в Visual Studio 2010 в процессе развертывания используется манифест развертывания для создания файла развертывания на основе SQL, относящегося к конфигурации сборки. При этом база данных будет создана, если она еще не существует, или внести необходимые изменения в базу данных, если она уже существует. Можно использовать SQLCMD. exe для запуска этого файла на целевом сервере или настроить Visual Studio для создания и запуска файла. Недостаток этого подхода заключается в том, что у вас есть только ограниченный контроль над параметрами развертывания. Часто может также потребоваться изменить файл развертывания SQL для предоставления значений переменных, зависящих от среды. Этот подход можно использовать только на компьютере с установленным Visual Studio 2010, и разработчику необходимо знать и предоставить строки подключения и учетные данные для всех конечных сред.
  • Для развертывания базы данных в составе проекта веб-приложенияможно использовать средство веб-развертывания службы IIS (IIS) (веб-развертывание). Однако этот подход гораздо сложнее, если требуется развернуть проект базы данных, а не просто реплицировать существующую локальную базу данных на целевом сервере. Можно настроить веб-развертывание для запуска скрипта развертывания SQL, создаваемого проектом базы данных, но для этого необходимо создать пользовательский файл целевых объектов конвейера WPP для проекта веб-приложения. Это повышает сложность процесса развертывания. Кроме того, веб-развертывание напрямую не поддерживает добавочные обновления существующих баз данных. Дополнительные сведения об этом подходе см. в разделе Расширение конвейера веб-публикаций до развернутого файла SQL проекта базы данных.
  • Можно использовать служебную программу VSDBCMD для развертывания базы данных с помощью схемы базы данных или манифеста развертывания. Программу VSDBCMD. exe можно вызвать из целевого объекта MSBuild, который позволяет публиковать базы данных в рамках более крупного скриптового процесса развертывания. Вы можете переопределить переменные в SQLCMDVARS-файле и много других свойств базы данных из команды VSDBCMD, которая позволяет настроить развертывание для различных сред без создания нескольких конфигураций сборки. VSDBCMD предоставляет функции различения, что означает внесение только необходимых изменений для согласования целевой базы данных со схемой базы данных. VSDBCMD также предлагает широкий спектр параметров командной строки, обеспечивающих точный контроль над процессом развертывания.

Из этого обзора можно увидеть, что использование VSDBCMD с MSBuild — подход, наиболее подходящий для типичного сценария корпоративного развертывания.

Visual Studio 2010 Web Deploy 2.0 VSDBCMD.exe
Поддерживает удаленное развертывание? Да Да Да
Поддерживает добавочные обновления? Да нет Да
Поддерживает скрипты, выполняемые до и после развертывания? Да Да Да
Поддерживает развертывание в нескольких средах? Ограничено Ограничено Да
Поддерживает развертывание по сценарию? Ограничено Да Да

Оставшаяся часть этого раздела описывает использование программы VSDBCMD с MSBuild для развертывания проектов баз данных.

Основные сведения о процессе развертывания

Служебная программа VSDBCMD позволяет развертывать базу данных с помощью схемы базы данных (DBSCHEMA-файл) или манифеста развертывания (файл. деплойманифест). На практике вы почти всегда будете использовать манифест развертывания, так как манифест развертывания позволяет предоставлять значения по умолчанию для различных свойств развертывания и находить скрипты SQL, выполняемые перед развертыванием или после развертывания, которые необходимо выполнить. Например, эта команда VSDBCMD используется для развертывания базы данных ContactManager на сервере базы данных в тестовой среде.

vsdbcmd.exe /a:Deploy
            /manifest:"…\ContactManager.Database.deploymanifest"
            /cs:"Data Source=TESTDB1;Integrated Security=true"
            /p:TargetDatabase=ContactManager
            /dd+
            /script:"…\Publish-ContactManager-Db.sql"

В данном случае:

  • Параметр /a (или /Action) указывает, что нужно сделать с помощью программы VSDBCMD. Его можно задать для импорта или развертывания. Параметр Import используется для создания DBSCHEMA-файла из существующей базы данных, а параметр deploy используется для развертывания DBSCHEMA-файла в целевой базе данных.
  • Параметр /manifest (или /MANIFESTFILE) определяет файл деплойманифест, который требуется развернуть. Если вместо этого вы хотите использовать DBSCHEMA-файл, используйте параметр /МОДЕЛ (или /моделфиле).
  • Параметр /КС (или /коннектионстринг) предоставляет строку подключения для целевого сервера базы данных. Обратите внимание, что это не включает имя базы—данных, которое должно быть подключено к серверу для создания базы данных. не нужно подключаться к отдельной базе данных. Если файл. деплойманифест содержит строку подключения, этот параметр можно опустить. Если вы все равно используете параметр, значение Switch переопределит значение. деплойманифест.
  • Свойство /p: TargetDatabase предоставляет имя, которое необходимо назначить целевой базе данных при создании. Это переопределяет значение свойства TargetDatabase в файле. деплойманифест. С помощью синтаксиса /p: [Property Name]можно задать разнообразные свойства развертывания и переопределить любые переменные SQLCMD, объявленные в файле. SQLCMDVARS.
  • Параметр /DD + (или /деплойтодатабасе + ) указывает, что необходимо создать развертывание и развернуть его в целевой среде. Если указать /дд- или опустить параметр, VSDBCMD создаст скрипт развертывания, но не будет развертывать его в целевой среде. Этот параметр часто является источником путаницы и более подробно описывается в следующем разделе.
  • Параметр /script (или /деплойментскриптфиле) указывает, где нужно создать скрипт развертывания. Это значение не влияет на процесс развертывания.

Дополнительные сведения об VSDBCMD см. в справочнике по командной строке для программы VSDBCMD. EXE (развертывание и импорт схемы) и инструкции: подготовка базы данных к развертыванию из командной строки с помощью программы VSDBCMD. EXE.

Пример использования программы VSDBCMD из файла проекта MSBuild см. в разделе Основные сведения о процессе сборки. Примеры настройки параметров развертывания базы данных для нескольких сред см. в разделе Настройка развертываний баз данных для нескольких сред.

Основные сведения о параметре Деплойтодатабасе

Поведение переключателя /DD или /деплойтодатабасе зависит от того, используется ли VSDBCMD с DBSCHEMA-файлом или деплойманифест-файлом. Если вы используете DBSCHEMA-файл, поведение довольно просто:

  • Если указать /DD + или /DD, VSDBCMD создаст скрипт развертывания и развернет базу данных.
  • Если указать /дд- или опустить параметр, VSDBCMD создаст только скрипт развертывания.

Если вы используете деплойманифест-файл, поведение является гораздо более сложным. Это связано с тем, что деплойманифест-файл содержит имя свойства деплойтодатабасе , которое также определяет, развернута ли база данных.

<DeployToDatabase>False</DeployToDatabase>

Значение этого свойства задается в соответствии со свойствами проекта базы данных. Если задать действие развертывания для создания скрипта развертывания (SQL) , значение будет равно false. Если задать действие развертывания для создания скрипта развертывания (SQL) и выполнить развертывание в базе данных, будет установлено значение true.

Note

Эти параметры связаны с определенной конфигурацией сборки и платформой. Например, если настроить параметры конфигурации отладки , а затем опубликовать их с помощью конфигурации выпуска , параметры не будут использоваться.

Note

В этом сценарии действие развертывания всегда должно быть настроено для создания скрипта развертывания (. SQL) , так как для развертывания базы данных не требуется Visual Studio 2010. Иными словами, свойство деплойтодатабасе всегда должно иметь значение false.

Если указано свойство деплойтодатабасе , параметр /DD переопределяет свойство только в том случае, если свойство имеет значение false:

  • Если свойство деплойтодатабасе имеет значение falseи вы указали /DD + или /DD, VSDBCMD переопределит свойство деплойтодатабасе и развернет базу данных.
  • Если свойство деплойтодатабасе имеет значение falseи вы указываете /дд- или опустите параметр, VSDBCMD не будет развертывать базу данных.
  • Если свойство деплойтодатабасе имеет значение true, VSDBCMD будет игнорировать параметр и развернуть базу данных.
  • Скрипт развертывания создается в каждом случае независимо от того, выполняется ли развертывание базы данных.

Заключение

В этом разделе приводятся общие сведения о процессе сборки и развертывания для проектов баз данных в Visual Studio 2010. Здесь также описано, как можно использовать программу VSDBCMD. exe с MSBuild для поддержки развертывания базы данных корпоративного масштаба.

Дополнительные сведения о том, как это работает на практике, см. в разделе Настройка развертываний баз данных для нескольких сред.

Дополнительные материалы

Сведения о настройке развертываний базы данных путем создания отдельного файла конфигурации развертывания для каждой среды см. в разделе Настройка развертываний баз данных для нескольких сред. Инструкции по настройке членства в ролях базы данных путем запуска скрипта, выполняемого после развертывания, см. в разделе Развертывание членства в ролях базы данных в тестовых средах. Рекомендации по управлению некоторыми из уникальных проблем, которые накладываются в базах данных членства, см. в разделе развертывание баз данных членства в корпоративных средах.

В этих разделах на сайте MSDN содержатся более подробные инструкции и общие сведения о проектах баз данных Visual Studio и процессе развертывания базы данных.