Развертывание базы данных (C#)

Скотт Митчелл

Развертывание веб-приложения ASP.NET требует получения необходимых файлов и ресурсов из среды разработки в рабочую среду. Для управляемых данными веб-приложений это включает схему базы данных и данные. Это руководство является первым в серии, в которой рассматриваются шаги, необходимые для успешного развертывания базы данных из среды разработки в рабочую среду.

Введение

Развертывание веб-приложения ASP.NET требует получения необходимых файлов и ресурсов из среды разработки в рабочую среду. В ходе последних шести учебников мы рассмотрели развертывание простого веб-приложения Book Reviews. Этот демонстрационный сайт состоит из нескольких серверных ресурсов , ASP.NET страниц, файлов конфигурации, Web.sitemap файлов и т. д., а также клиентских ресурсов, таких как изображения и CSS-файлы. Но как насчет веб-приложений на основе данных? Какие дополнительные действия необходимо предпринять для развертывания веб-приложения, использующего базу данных?

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

Изучение веб-приложения обновленных обзоров книг

Чтобы продемонстрировать развертывание веб-приложения на основе данных, я обновил веб-приложение Book Reviews с простого статического веб-сайта на управляемый данными. Как и ранее, в этом руководстве есть две версии приложения: одна использует модель проекта веб-приложения, а другая — модель проекта веб-сайта.

Обновленное веб-приложение Book Reviews использует базу данных Express Edition SQL Server 2008, которая хранится в папке App_Data сайта (~/App_Data/Reviews.mdf). Если на компьютере установлена SQL Server 2008, демонстрация должна работать без ошибок. Если у вас более ранняя версия SQL Server вы можете установить бесплатный SQL Server 2008 Express Edition или использовать скрипты базы данных, доступные в этом руководстве, чтобы создать базу данных самостоятельно.

База Reviews.mdf данных содержит четыре таблицы:

  • Genres — включает запись для каждого жанра, например технологии, фантастики и бизнеса.
  • Books — содержит запись для каждой проверки со столбцами Title, GenreId, ReviewDate, и Review.
  • Authors — содержит сведения о каждом авторе, который внес свой вклад в рецензируемую книгу.
  • BooksAuthors — таблица соединения "многие ко многим", указывающая, какие авторы написали книги.

На рисунке 1 показана схема ER с этими четырьмя таблицами.

База данных веб-приложения Book Reviews состоит из четырех таблиц

Рис. 1. База данных веб-приложения "Обзоры книг" состоит из четырех таблиц (щелкните для просмотра полноразмерного изображения)

Предыдущая версия веб-сайта обзоров книги имела отдельную страницу ASP.NET для каждой книги. Например, была страница с именем ~/Tech/TYASP35.aspx , содержащая обзор для Обучения себя ASP.NET 3,5 за 24 часа. Эта новая версия веб-сайта на основе данных содержит отзывы, хранящиеся в базе данных, и одну страницу ASP.NET, Review.aspx?ID=bookId, на которой отображается отзыв для указанной книги. Аналогичным образом, существует страница Genre.aspx?ID=genreId , на которую перечислены рецензируемые книги в указанном жанре.

На рисунках 2 и 3 показаны страницы Genre.aspx и Review.aspx в действии. Запишите URL-адрес в адресной строке для каждой страницы. На рис. 2 это Genre.aspx?ID=85d164ba-1123-4c47-82a0-c8ec75de7e0e. Так как 85d164ba-1123-4c47-82a0-c8ec75de7e0e является GenreId значением для жанра Технологии, заголовок страницы гласит "Технологические обзоры", а маркированный список перечисляет те отзывы на сайте, которые относятся к этому жанру.

Страница жанра технологии

Рис. 2. Страница жанра технологии (щелкните для просмотра полноразмерного изображения)

Обзор для обучения себя ASP.NET 3,5 за 24 часа

Рис. 3. Обзор для обучения себя ASP.NET 3,5 за 24 часа (щелкните для просмотра полноразмерного изображения)

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

Если вы скачиваете приложение Book Reviews, помните, что его цель — продемонстрировать развертывание приложения, управляемого данными. В нем нет рекомендаций по проектированию приложений. Например, отсутствует отдельный уровень доступа к данным (DAL); страницы ASP.NET напрямую взаимодействуют с базой данных через элемент управления SqlDataSource или ADO.NET код в своих классах кода программной части. Дополнительные сведения о создании управляемых данными приложений с помощью многоуровневой архитектуры см. в учебниках по работе с данными.

Базы данных в области разработки и рабочей среды

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

До первого развертывания существовал только один экземпляр базы данных, и этот экземпляр находится в среде разработки. При первом развертывании приложения в рабочей среде необходимо не только скопировать необходимые серверные и клиентские файлы, но и скопировать базу данных из среды разработки в рабочую среду. Это то, где мы сейчас работаем с веб-приложением Book Reviews . База данных находится в App_Data папке в нашей среде разработки, но еще не была отправлена в рабочую среду.

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

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

В оставшейся части этого руководства рассматривается развертывание базы данных из среды разработки в рабочую среду. Если вы следите за этим, необходимо убедиться, что ваша учетная запись поставщика веб-узла включает поддержку базы данных Microsoft SQL Server. Вам также потребуется иметь под рукой некоторые сведения, а именно имя сервера базы данных, имя базы данных, имя пользователя и пароль, используемые для подключения к базе данных.

Как отмечалось ранее в этом руководстве, база данных веб-сайта Book Reviews представляет собой базу данных SQL Server 2008 Express Edition, хранящуюся в папке App_Data . Не зря развернуть такую базу данных будет так же просто, как копировать папку App_Data из среды разработки в рабочую среду. Однако большинство поставщиков веб-узлов не поддерживают размещение баз данных в папке App_Data из-за соображений безопасности. Вместо этого веб-узлы предоставляют учетную запись на сервере базы данных SQL Server в своей среде. Для развертывания базы данных из среды разработки в рабочую среду требуется регистрация базы данных на сервере базы данных веб-узла.

Так как же получить базу данных из среды разработки в рабочую? Это можно сделать несколькими способами в зависимости от того, какие службы предлагает ваш веб-узел. С помощью некоторых узлов, таких как DiscountASP.NET, вы можете по FTP создать резервную копию базы данных или фактический .mdf файл на веб-сайте, а затем из панель управления восстановить файл резервной копии или присоединить .mdf файл к серверу базы данных SQL Server. С помощью таких средств развернуть базу данных так же просто, как скопировать App_Data папку в рабочую среду, а затем подключить ее через панель управления. Это, пожалуй, самый простой и быстрый способ публикации базы данных в первый раз.

Другой подход заключается в использовании мастера публикации баз данных. Мастер публикации баз данных — это классическое приложение Windows, которое создает команды SQL для создания схемы базы данных — таблиц, хранимых процедур, представлений, определяемых пользователем функций и т. д. — и при необходимости данных в ее таблицах. Затем можно подключиться к серверу базы данных поставщика веб-узла через SQL Server Management Studio, а затем выполнить этот скрипт, чтобы дублировать базу данных в рабочей среде. Кроме того, если поставщик веб-узла поддерживает службы публикации баз данных Майкрософт, скрипт, созданный мастером публикации баз данных, автоматически выполняется на сервере базы данных от вашего имени. Поскольку мастер публикации баз данных создает скрипт, который создает схему и данные базы данных, он будет работать независимо от того, предлагает ли поставщик веб-узла такие функции, как присоединение отправленного .mdf файла.

Создание команд SQL для создания схемы базы данных и данных с помощью мастера публикации баз данных

Рассмотрим использование мастера публикации баз данных для развертывания базы данных "Рецензии на книги" в рабочей среде. Если вы используете Visual Studio 2008 или более поздней версии, мастер публикации баз данных уже установлен.

Откройте Visual Studio и перейдите к Reviews.mdf базе данных. Если вы используете Visual Web Developer, перейдите в Обозреватель базы данных. Если вы используете Visual Studio, используйте серверную Обозреватель. На рисунке 4 показана Reviews.mdf база данных в Обозреватель базы данных в Visual Web Developer. Как показано на рисунке Reviews.mdf 4, база данных состоит из четырех таблиц, трех хранимых процедур и определяемой пользователем функции.

Найдите базу данных в Обозреватель базы данных Обозреватель или сервере

Рис. 4. Найдите базу данных в Обозреватель базы данных или серверной Обозреватель (щелкните для просмотра полноразмерного изображения)

Щелкните правой кнопкой мыши имя базы данных и выберите в контекстном меню параметр "Опубликовать в поставщике". Откроется мастер публикации баз данных (см. рис. 5). Нажмите кнопку Далее, чтобы перейти за экран-заставку.

Снимок экрана: окно мастера публикации баз данных, в котором показан экран-заставка и кнопка Далее для продвижения мастера.

Рис. 5. Экран-заставка мастера публикации баз данных (щелкните для просмотра полноразмерного изображения)

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

Примечание

Если при нажатии кнопки Далее на экране, показанном на рисунке 6, при нажатии кнопки Далее на экране, показанном на рисунке 6, возникает ошибка "Нет объектов в databaseName типов, доступных в скрипте этого мастера", убедитесь, что путь к файлу базы данных не слишком длинный. Обнаружено, что эта ошибка может возникнуть, если путь к файлу базы данных слишком длинный.

Снимок экрана: окно мастера публикации баз данных, в котором отображается выделенная база данных в списке баз данных и заполненный флажок Скрипт всех объектов.

Рис. 6. Экран-заставка мастера публикации баз данных (щелкните, чтобы просмотреть полноразмерное изображение)

На следующем экране можно создать файл скрипта или, если веб-узел поддерживает его, опубликовать базу данных непосредственно на сервере базы данных поставщика веб-узла. Как показано на рисунке 7, сценарий записан в файл C:\REVIEWS.MDF.sql.

Создание скрипта для базы данных в файл или ее публикация непосредственно поставщику веб-узла

Рис. 7. Создание скрипта для базы данных в файл или публикация ее непосредственно поставщику веб-узла (щелкните, чтобы просмотреть полноразмерное изображение)

На следующем экране будет предложено ввести различные варианты создания скриптов. Можно указать, должен ли скрипт включать инструкции drop, чтобы удалить эти существующие объекты. По умолчанию используется значение True, что нормально при первом развертывании базы данных. Можно также указать, является ли целевая база данных SQL Server 2000, SQL Server 2005 или SQL Server 2008. Наконец, можно указать, следует ли создать скрипт для схемы и данных, только данных или только схемы. Схема представляет собой коллекцию объектов базы данных, таблиц, хранимых процедур, представлений и т. д. Данные — это сведения, хранящиеся в таблицах.

Как показано на рисунке 8, мастер настроен для удаления существующих объектов базы данных, создания скрипта для базы данных SQL Server 2008 и публикации схемы и данных.

Указание параметров публикации

Рис. 8. Указание параметров публикации (щелкните для просмотра полноразмерного изображения)

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

Выполнение команд SQL в базе данных рабочей среды

Теперь, когда у нас есть скрипт, содержащий команды SQL для создания базы данных и ее данных, осталось выполнить скрипт в рабочей базе данных. Некоторые поставщики веб-узлов предлагают текстовое поле в панель управления где можно ввести команды SQL для выполнения в базе данных. Если у вас очень большой файл скрипта, этот параметр может не работать ( REVIEWS.MDF.sql например, размер файла скрипта превышает 425 КБ).

Лучший подход — подключиться непосредственно к рабочему серверу базы данных с помощью SQL Server Management Studio (SSMS). Если на компьютере установлен выпуск SQL Server, отличный от Express, скорее всего, у вас уже установлена среда SSMS. В противном случае можно скачать и установить бесплатную копию SQL Server Management Studio Express Edition.

Запустите SSMS и подключитесь к серверу базы данных веб-узла, используя сведения, предоставленные поставщиком веб-узла.

Снимок экрана: диалоговое окно

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

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

Снимок экрана: окно microsoft SQL Server Management Studio, в котором показаны команды из файла скрипта, выполняемые на рабочем сервере.

Рис. 10. Подключение к серверу базы данных поставщика веб-узлов (щелкните, чтобы просмотреть полноразмерное изображение)

Это все, что есть к нему! На этом этапе база данных разработки была дублирована в рабочую среду. При обновлении базы данных в SSMS должны появиться новые объекты базы данных. На рисунке 11 показаны таблицы рабочей базы данных, хранимые процедуры и определяемые пользователем функции, которые зеркало в базе данных разработки. Так как мы поручили мастеру публикации баз данных опубликовать данные, таблицы рабочей базы данных содержат те же данные, что и таблицы базы данных разработки на момент выполнения мастера. На рисунке 12 показаны данные в Books таблице рабочей базы данных.

Объекты базы данных были дублированы в рабочей базе данных

Рис. 11. Объекты базы данных были дублированы в рабочей базе данных (щелкните, чтобы просмотреть полноразмерное изображение)

Рабочая база данных содержит те же данные, что и в базе данных разработки.

Рис. 12. Рабочая база данных содержит те же данные, что и в базе данных разработки (щелкните для просмотра полноразмерного изображения)

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

Сводка

Для развертывания веб-приложения, управляемого данными, необходимо скопировать базу данных, используемую во время разработки, в рабочую среду. Многие поставщики веб-узлов предлагают средства для упрощения процесса развертывания базы данных. Например, с помощью DiscountASP.NET можно использовать FTP-файл базы данных .mdf (или резервную копию), а затем подключить базу данных к серверу базы данных из панель управления. Другой вариант, который работает независимо от возможностей поставщика веб-узла, — это мастер публикации баз данных Майкрософт, который создает скрипт команд SQL для создания схемы и данных базы данных разработки. После создания этого скрипта его можно выполнить в рабочей базе данных.

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

Счастливое программирование!

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

Дополнительные сведения по темам, рассматриваемым в этом руководстве, см. в следующем ресурсе: