Практическое руководство. Развертывание базы данных с проектом веб-приложения

При подготовке развертывания проекта веб-приложения, использующего одну или несколько баз данных SQL Server, можно задать параметры, указывающие скрипты баз данных, которые необходимо запустить при развертывании. Эти параметры применяются как при развертывании с помощью публикации одним щелчком, так и при развертывании с помощью пакета веб-развертывания.

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

В этом разделе рассматриваются только параметры базы данных. Дополнительные сведения о других задачах, связанных с настройкой развертывания, см. в разделах Практическое руководство. Развертывание проекта веб-приложения с помощью публикации одним щелчком и веб-развертывания и Практическое руководство. Развертывание проекта веб-приложения с помощью пакета веб-развертывания. Дополнительные сведения о развертывании проекта веб-приложения см. в разделе Карта содержимого развертывания ASP.NET.

ПримечаниеПримечание

Следующие процедуры предназначены для использования с базами данных, содержащих не более 10 000 объектов базы данных. (В количество объектов входят как данные, так и структура; строки таблиц считаются объектами.) Сведения о развертывании более крупных баз данных см. в разделе Развертывание базы данных с использованием мастера публикации базы данных.

Параметры, определяющие, какие скрипты запускаются при развертывании, задаются на вкладке Упаковка и публикация SQL-проекта страницы Свойства проекта. Эта вкладка организована в виде структуры "основной/подробности". В таблице, расположенной в верхней части вкладки, указываются развертываемые базы данных. В остальной части вкладки указываются параметры, которые применяются к базе данных, выбранной в таблице.

Задание баз данных для развертывания

  1. В обозревателе решений выберите имя проекта и щелкните Свойства.

  2. На странице Свойства перейдите на вкладку Упаковка и публикация SQL-проекта.

    Вкладка Пакет/Публикация SQL отображается так, как показано на следующем рисунке.

    Вкладка "Упаковка и публикация SQL-проекта" диалогового окна "Свойства проекта"
  3. В раскрывающемся списке Конфигурация выберите развертываемую конфигурацию построения.

    Можно настроить развертывание для конфигурации построения Debug или Release или для пользовательской конфигурации построения, которая была создана с помощью диалогового окна Диспетчер конфигураций. Например, может потребоваться задать разные параметры для развертывания на тестовом сервере и для развертывания на рабочем сервере.

    Значение по умолчанию для списка КонфигурацияАктивные. Это означает, что параметры этой вкладки применяются к конфигурации построения, выбранной для проекта в данный момент. Выбранная в данный момент конфигурация построения отображается в главной панели инструментов диалогового окна Диспетчер конфигураций. (Чтобы открыть Диспетчер конфигураций, выберите этот пункт в меню Построение.)

  4. Щелкните Импортировать из Web.config.

    В таблице будет создано по строке для каждой строки подключения, найденной в файле Web.config. По умолчанию к имени строки подключения добавляется "-Deployment".

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

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

Задание параметров базы данных

  1. В таблице Записи базы данных выберите строку, для которой задаются параметры.

    Значения, вводимые в разделе Подробности записи базы данных, применяются только к выбранной в данный момент строке таблицы Записи базы данных. Если в таблице Записи базы данных не выбрана ни одна строка, раздел Подробности записи базы данных отключен.

  2. В поле Строка подключения для конечной базы данных введите строку подключения, которую следует использовать при развертывании.

    Эта строка подключения должна отличаться от строки подключения, используемой в развертываемом файле Web.config для этой же базы данных. Например, для строки подключения, используемой при развертывании, возможно требуются права администратора, которые не следует предоставлять для подключения при запуске приложения пользователями.

  3. Если требуется автоматически создать скрипты из существующей базы данных, установите флажок Извлечь данные и (или) схему из существующей базы данных.

    Этот флажок установлен по умолчанию для строк таблицы Записи базы данных, импортированных из файла Web.config. При установке этого флажка в таблицу Скрипты базы данных включается строка, указывающая, что создаваемые автоматически скрипты запускаются в целевой базе данных.

  4. При установке флажка Извлечь данные и (или) схему из существующей базы данных необходимо выполнить следующие действия.

    1. В текстовом поле Строка подключения для исходной базы данных введите строку подключения, которую следует использовать при развертывании.

      По умолчанию для строк таблицы Записи базы данных, импортированных из файла Web.config, при инициализации это поле получает значение из файла Web.config.

    2. В раскрывающемся списке Параметры создания скриптов базы данных укажите, требуется ли, чтобы автоматически создаваемые для этой базы данных скрипты дублировали в целевую среду только структуры баз данных (Только схема), структуры и данные (Схема и данные) или только данные (Только данные).

      ПримечаниеПримечание

      Если развертывается база данных членства ASP.NET по умолчанию и развертывать учетные записи, созданные на компьютере разработчика, не требуется, необходимо выполнить дополнительные действия. В этом случае нельзя просто выбрать вариант Только схема, поскольку для системы членства необходимы данные одной из таблиц. Дополнительные сведения см. в разделе Практическое руководство. Развертывание базы данных сведений о членстве ASP.NET, не включая учетные записи пользователей.

      ПримечаниеПримечание

      Если при выборе параметра Только схема или Схема и данные в базе данных создаются пользователи или роли, развертывание может завершиться неудачей из-за недостаточных разрешений для создания пользователей или ролей в целевой базе данных. Дополнительные сведения об этой ошибке и способах ее устранения или предотвращения см. в вопросе о командах базы данных CREATE USER и CREATE ROLE в разделе Вопросы и ответы о развертывании проектов веб-приложений ASP.NET.

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

    При нажатии кнопки Добавить скрипт открывается диалоговое окно Выбор файла. С помощью этого окна можно выбрать написанный скрипт и добавить его в таблицу Скрипты базы данных.

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

  7. В файле преобразования Web.config для развертываемой конфигурации построения добавьте разметку, преобразующую строку подключения для этой базы данных в значение, которое строка должна иметь в развернутом веб-приложении.

    Сведения о создании и изменении файлов преобразования Web.config см. в разделе Практическое руководство. Преобразование файла Web.config при развертывании проекта веб-приложения.

  8. Если не требуется, чтобы автоматически создаваемый скрипт запускался в транзакции, измените значение атрибута Transacted элемента скрипта Source на False в файле проекта. Сведения об изменении файла проекта см. в разделе Практическое руководство. Изменение параметров развертывания в файле проекта.

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

    ПримечаниеПримечание

    Если для базы данных запускается несколько скриптов, задайте атрибуту Transacted одно и то же значение для всех скриптов. Использование обоих значений True и False может привести к ошибке превышения времени ожидания при развертывании.

  9. Если исходная или целевая база данных является базой данных SQL Azure и запускается автоматически создаваемый скрипт, измените элемент PreSource скрипта в файле проекта, чтобы он включал следующие атрибуты:

    targetDatabaseEngineType=SQLAzureDatabase

    targetServerVersion=version100

    prefetchObjects=false

    Задайте атрибуту targetServerVersion значение version100 для SQL 2008 или version105 для SQL 2008 R2. Сведения об изменении файла проекта см. в разделе Практическое руководство. Изменение параметров развертывания в файле проекта.

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

Повторное развертывание без изменения баз данных

  1. В окне Обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите пункт Свойства.

  2. Перейдите на вкладку Пакет/Публикация веб-сайта.

    Вкладка Пакет/Публикация веб-сайта отображается так, как показано на следующем рисунке.

    Диалоговое окно упаковки и публикации
  3. Убедитесь, что в раскрывающемся списке Конфигурация выбрана конфигурация построения, для которой требуется изменить параметры.

  4. Если требуется отключить обновление для всех баз данных в таблице Записи базы данных, снимите флажок Включить все базы данных, настроенные на вкладке "Пакет/Публикация SQL".

    После того как флажок снят, никакие скрипты SQL не будут запускаться при развертывании.

  5. Если требуется отключить обновление для некоторых баз данных в таблице Записи базы данных, снимите флажок Развертывание для всех баз данных, для которых не требуется запускать скрипты.

    После того как эти флажки сняты, никакие скрипты SQL не будут запускаться для указанных баз данных при развертывании.

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

Предупреждающее замечаниеВнимание

Любые данные, которые возможно вводились в конечной среде, будут потеряны.

Повторное развертывание базы данных с помощью автоматически создаваемых скриптов

  • Если требуется, чтобы автоматически создаваемый скрипт удалял по отдельности объекты базы данных, например таблицы, представления и хранимые процедуры перед созданием новых версий этих объектов, в файле проекта задайте атрибуту ScriptDropsFirst элемента PreSource автоматически создаваемого скрипта значение True. Сведения об изменении файла проекта см. в разделе Практическое руководство. Изменение параметров развертывания в файле проекта.

    Этот параметр указывает формировать инструкцию Drop SQL для каждого объекта базы данных, создаваемого из исходной базы данных. Инструкция Drop для определенного объекта запускается прямо перед инструкцией, создающей объект. Если объект существует в целевой, но не в исходной базе данных (как правило, из-за того что он был удален из исходной базы данных после предыдущего развертывания), для него не создается инструкция Drop.

    Если перед повторным созданием отдельных объектов базы данных требуется полностью удалить базу данных, задайте атрибуту DropDestinationDatabase элемента Source значение True.

    ПримечаниеПримечание

    Убедитесь, что используемым учетным данным предоставлены достаточные разрешения как для удаления, так и для повторного создания базы данных. Если учетным данным назначена роль db_owner, но не назначена роль dbcreator, можно будет удалить базу данных, но не повторно создать ее после удаления. При развертывании на серверах компании-поставщика услуг размещения используемым учетным данным, скорее всего, не будет назначена роль dbcreator.

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

ПримечаниеПримечание

Visual Studio не выполняет автоматическое сравнение исходной и целевой баз данных с целью обнаружения изменений схемы или данных. Описанная ниже процедура представляет единственный способ публикации изменений базы данных.

Развертывание изменений в базе данных и сохранение данных

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

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

  2. В окне Обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите команду Свойства.

  3. Перейдите на вкладку Упаковка и публикация SQL-проекта.

    Вкладка Пакет/Публикация SQL отображается так, как показано на следующем рисунке.

    Вкладка "Упаковка и публикация SQL-проекта" диалогового окна "Свойства проекта"
  4. В таблице Скрипты базы данных снимите флажки Включить в строках, соответствующих скриптам, которые не должны запускаться.

    Если установлен флажокИзвлечь данные и (или) схему из существующей базы данных, снимите флажок Включить для автоматически создаваемого скрипта.

  5. Добавьте пользовательские скрипты базы данных для выбранной базы данных с помощью кнопки Добавить скрипт.

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

  6. (Необязательно) Если строки в таблице Скрипты базы данных отображаются не в том порядке, в котором они должны запускаться, измените порядок строк с помощью кнопок со стрелками вверх и вниз.

Показ: