Развертывание веб-приложения ASP.NET с помощью SQL Server Compact с помощью Visual Studio или Visual Web Developer: миграция на SQL Server — 10 из 12

Том Дайкстра (Tom Dykstra)

Скачать начальный проект

В этой серии руководств показано, как развернуть (опубликовать) проект веб-приложения ASP.NET, включающий базу данных SQL Server Compact, с помощью версии-кандидата Visual Studio 2012 или Visual Studio Express 2012 RC for Web. Вы также можете использовать Visual Studio 2010 при установке обновления веб-публикации. Общие сведения о серии см. в первом руководстве этой серии.

Руководство по функциям развертывания, появившиеся после выпуска версии-кандидата Visual Studio 2012, развертывание SQL Server выпусков, отличных от SQL Server Compact, а также развертывание в Служба приложений Azure веб-приложения, см. в статье ASP.NET веб-развертывание с помощью Visual Studio.

Общие сведения

В этом руководстве показано, как выполнить миграцию с SQL Server Compact на SQL Server. Одна из причин, по которой это может потребоваться, — воспользоваться преимуществами SQL Server функций, которые SQL Server Compact не поддерживают, таких как хранимые процедуры, триггеры, представления или репликация. Дополнительные сведения о различиях между SQL Server Compact и SQL Server см. в руководстве по развертыванию SQL Server Compact.

SQL Server Express и полная SQL Server для разработки

После того как вы решите выполнить обновление до SQL Server, вы можете использовать SQL Server или SQL Server Express в средах разработки и тестирования. Помимо различий в поддержке инструментов и функций ядра СУБД, существуют различия в реализации поставщика между SQL Server Compact и другими версиями SQL Server. Эти различия могут привести к тому, что один и тот же код будет генерировать разные результаты. Поэтому, если вы решили оставить SQL Server Compact в качестве базы данных разработки, следует тщательно протестировать сайт в SQL Server или SQL Server Express в тестовой среде перед каждым развертыванием в рабочей среде.

В отличие от SQL Server Compact, SQL Server Express по сути является тем же ядром СУБД и использует тот же поставщик .NET, что и полный SQL Server. При тестировании с помощью SQL Server Express вы можете быть уверены в том, что получите те же результаты, что и при SQL Server. Большинство средств базы данных можно использовать с SQL Server Express, которые можно использовать с SQL Server (заметное исключение — SQL Server Profiler), и поддерживает другие функции SQL Server, такие как хранимые процедуры, представления, триггеры и репликация. (Однако обычно необходимо использовать полную SQL Server на рабочем веб-сайте. SQL Server Express может работать в общей среде размещения, но не предназначен для этого, и многие поставщики услуг размещения не поддерживают его.)

Если вы используете Visual Studio 2012, вы обычно выбираете SQL Server Express LocalDB для среды разработки, так как это то, что устанавливается вместе с Visual Studio по умолчанию. Однако LocalDB не работает в СЛУЖБАх IIS, поэтому для тестовой среды необходимо использовать SQL Server или SQL Server Express.

Объединение баз данных и их разделение

Приложение Университета Contoso имеет две базы данных SQL Server Compact: базу данных членства (aspnet.sdf) и базу данных приложения (School.sdf). При миграции эти базы данных можно перенести в две отдельные базы данных или в одну базу данных. Вы можете объединить их, чтобы упростить объединение баз данных между базой данных приложения и базой данных членства. Ваш план размещения также может предоставить причину для их объединения. Например, поставщик услуг размещения может взимать дополнительную плату за несколько баз данных или даже не разрешать более одной базы данных. Это относится к учетной записи размещения Cytanium Lite, используемой в этом руководстве, которая позволяет использовать только одну SQL Server базу данных.

В этом руководстве вы перенесете две базы данных следующим образом:

  • Выполните миграцию в две базы данных LocalDB в среде разработки.
  • Выполните миграцию в две базы данных SQL Server Express в тестовой среде.
  • Выполните миграцию в одну объединенную полную SQL Server базу данных в рабочей среде.

Напоминание. Если при работе с руководством появляется сообщение об ошибке или что-то не работает, обязательно проверка страницу устранения неполадок.

Установка SQL Server Express

SQL Server Express автоматически устанавливается по умолчанию вместе с Visual Studio 2010, но по умолчанию не устанавливается вместе с Visual Studio 2012. Чтобы установить SQL Server Express 2012, щелкните следующую ссылку.

Выберите ENU/x64/SQLEXPR_x64_ENU.exe или ENU/x86/SQLEXPR_x86_ENU.exeи в мастере установки примите параметры по умолчанию. Дополнительные сведения о вариантах установки см. в разделе Установка SQL Server 2012 с помощью мастера установки (программа установки).

Создание баз данных SQL Server Express для тестовой среды

Следующим шагом является создание базы данных ASP.NET членства и базы данных School.

В меню Вид выберите Сервер Обозреватель (Обозреватель базы данных в Visual Web Developer), а затем щелкните правой кнопкой мыши Connections данных и выберите Создать базу данных SQL Server.

Selecting_Create_New_SQL_Server_Database

В диалоговом окне Создание базы данных SQL Server введите ".\SQLExpress" в поле Имя сервера и aspnet-Test в поле Имя базы данных, а затем нажмите кнопку ОК.

Create_New_SQL_Server_Database_aspnet

Выполните ту же процедуру, чтобы создать базу данных SQL Server Express School с именем School-Test.

(Вы добавляете "Test" к этим именам баз данных, так как позже вы создадите дополнительный экземпляр каждой базы данных для среды разработки и вам потребуется возможность различать два набора баз данных.)

На Обозреватель сервера теперь отображаются две новые базы данных.

New_databases_in_Server_Explorer

Создание скрипта предоставления для новых баз данных

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

В папке SolutionFiles решения, созданной в руководстве Развертывание в рабочей среде , создайте файл SQL с именем Grant.sql. Скопируйте следующие команды SQL в файл, а затем сохраните и закройте файл:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Примечание

Этот скрипт предназначен для работы с SQL Server 2008 и параметрами IIS в Windows 7, как они указаны в этом руководстве. Если вы используете другую версию SQL Server или Windows или настроили службы IIS на компьютере по-другому, может потребоваться внести изменения в этот скрипт. Дополнительные сведения о скриптах SQL Server см. в электронной документации по SQL Server.

Примечание

Примечание по безопасности Этот скрипт предоставляет db_owner разрешения пользователю, который обращается к базе данных во время выполнения, что и будет иметься в рабочей среде. В некоторых сценариях может потребоваться указать пользователя, который имеет полные разрешения на обновление схемы базы данных только для развертывания, и указать для времени выполнения другого пользователя, который имеет разрешения только на чтение и запись данных. Дополнительные сведения см. в разделе Просмотр автоматических изменений Web.config для Code First Migrationsстатьи Развертывание в IIS в качестве тестовой среды.

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

Затем вы настроите Visual Studio таким образом, чтобы она делала следующие задачи для каждой базы данных:

  • Создайте скрипт SQL, который создает структуру базы данных-источника (таблицы, столбцы, ограничения и т. д.) в целевой базе данных.
  • Создайте скрипт SQL, который вставляет данные базы данных-источника в таблицы целевой базы данных.
  • Запустите созданные скрипты и созданный скрипт Grant в целевой базе данных.

Откройте окно Свойства проекта и выберите вкладку Пакет или публикация SQL .

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

Щелкните Включить эту страницу.

Package_Publish_SQL_tab_Enable_This_page

Вкладка "Пакет/публикация SQL " обычно отключена, так как она указывает устаревший метод развертывания. В большинстве сценариев следует настроить развертывание базы данных в мастере публикации веб-сайта . Переход с SQL Server Compact на SQL Server или SQL Server Express является особым случаем, для которого этот метод является хорошим выбором.

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

Selecting_Import_from_Web.config

Visual Studio ищет строки подключения в файле Web.config, находит одну для базы данных членства и одну для базы данных School и добавляет строку, соответствующую каждой строка подключения в таблице Записи базы данных. Строки подключения, которые он находит, относятся к существующим SQL Server Compact базам данных, и следующим шагом будет настройка способа и места развертывания этих баз данных.

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

Database_Entry_Details_section_of_Package_Publish_SQL_tab

Настройка параметров развертывания для базы данных членства

Выберите строку DefaultConnection-Deployment в таблице Записи базы данных , чтобы настроить параметры, применяемые к базе данных членства.

В поле Строка подключения для целевой базы данных введите строка подключения, указывающий на новую базу данных членства SQL Server Express. Необходимые строка подключения можно получить на Обозреватель сервера. В Обозреватель сервера разверните узел Data Connections и выберите базу данных aspnetTest, а затем в окне Свойства скопируйте значение Строка подключения.

aspnet_connection_string_in_Server_Explorer

Здесь воспроизводятся те же строка подключения:

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False

Скопируйте и вставьте этот строка подключения в строку подключения для целевой базы данных на вкладке Пакет/Публикация SQL.

Убедитесь, что выбран параметр Извлечь данные и (или) схему из существующей базы данных . Это приводит к автоматическому созданию и запуску скриптов SQL в целевой базе данных.

Строка подключения для значения базы данных-источника извлекается из файла Web.config и указывает на базу данных SQL Server Compact разработки. Это база данных-источник, которая будет использоваться для создания скриптов, которые будут выполняться позже в целевой базе данных. Так как вы хотите развернуть рабочую версию базы данных, измените aspnet-Dev.sdf на aspnet-Prod.sdf.

Измените параметры сценариев базы данных с "Только схема" на "Схема и данные", так как требуется скопировать данные (учетные записи пользователей и роли), а также структуру базы данных.

Чтобы настроить развертывание для выполнения созданных ранее скриптов предоставления разрешений, необходимо добавить их в раздел Сценарии базы данных . Щелкните Добавить скрипт и в диалоговом окне Добавление скриптов SQL перейдите в папку, в которой хранится скрипт предоставления (это папка, содержащая файл решения). Выберите файл с именем Grant.sql и нажмите кнопку Открыть.

Select_File_dialog_box_grant_script

Параметры строки DefaultConnection-Deployment в разделе "Записи базы данных " теперь выглядят следующим образом:

Database_Entry_Details_for_DefaultConnection_Test

Настройка параметров развертывания для учебной базы данных

Затем выберите строку SchoolContext-Deployment в таблице Записи базы данных , чтобы настроить параметры развертывания для базы данных School.

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

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False

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

Строка подключения для значения базы данных-источника извлекается из файла Web.config и указывает на базу данных SQL Server Compact разработки. Измените "School-Dev.sdf" на "School-Prod.sdf", чтобы развернуть рабочую версию базы данных. (Вы никогда не создавали файл School-Prod.sdf в папке App_Data, поэтому позже скопируйте этот файл из тестовой среды в папку App_Data в папке проекта ContosoUniversity.)

Измените параметры скриптов базы данных на Схема и данные.

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

Когда все будет готово, параметры строки SchoolContext-Deployment в разделе Записи базы данных выглядят следующим образом:

Database_Entry_Details_for_SchoolContext_Test

Сохраните изменения на вкладке Пакет или публикация SQL .

Скопируйте файл School-Prod.sdf из папки c:\inetpub\wwwroot\ContosoUniversity\App_Data в папку App_Data в проекте ContosoUniversity.

Указание режима транзакций для скрипта предоставления

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

В Обозреватель решений щелкните правой кнопкой мыши проект ContosoUniversity и выберите Пункт Выгрузить проект.

Unload_Project_in_Solution_Explorer

Затем снова щелкните проект правой кнопкой мыши и выберите Изменить ContosoUniversity.csproj.

Edit_Project_in_Solution_Explorer

В редакторе Visual Studio отображается XML-содержимое файла проекта. Обратите внимание, что существует несколько PropertyGroup элементов. (На изображении содержимое элементов опущено PropertyGroup .)

Окно редактора файла проекта

Первый, не Condition имеющий атрибута, предназначен для параметров, которые применяются независимо от конфигурации сборки. Один PropertyGroup элемент применяется только к конфигурации сборки отладки (обратите внимание на Condition атрибут ), один — только к конфигурации сборки выпуска, а один — только к конфигурации тестовой сборки. В элементе PropertyGroup конфигурации сборки Release вы увидите PublishDatabaseSettings элемент, содержащий параметры, введенные на вкладке Пакет/Публикация SQL . Существует элемент, соответствующий Object каждому из указанных скриптов предоставления (обратите внимание на два экземпляра "Grant.sql"). По умолчанию Transacted атрибутом Source элемента для каждого скрипта предоставления является False.

Transacted_false

Измените значение атрибута Transacted элемента на SourceTrue.

Transacted_true

Сохраните и закройте файл проекта, а затем щелкните правой кнопкой мыши проект в Обозреватель решений и выберите Перезагрузить проект.

Reload_project

Настройка преобразований Web.Config для строк подключения

Строки подключения для новых баз данных SQL Express, введенные на вкладке Пакет/Публикация SQL , используются веб-развертыванием только для обновления целевой базы данных во время развертывания. Вам по-прежнему нужно настроить преобразованияWeb.config, чтобы строки подключения в развернутом файлеWeb.config указывали на новые базы данных SQL Server Express. (При использовании вкладки Пакет/публикация SQL нельзя настроить строки подключения в профиле публикации.)

Откройте Web.Test.config и замените connectionStrings элемент элементом connectionStrings в следующем примере. (Убедитесь, что вы копируете только элемент connectionStrings, а не окружающий код, показанный здесь для предоставления контекста.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Этот код приводит к замене connectionString атрибутов и providerName каждого add элемента в развернутом файлеWeb.config . Эти строки подключения не идентичны тем, которые вы указали на вкладке Пакет или публикация SQL. К ним добавлен параметр MultipleActiveResultSets=True, так как он необходим для Entity Framework и универсальные поставщики.

Установка SQL Server Compact

Пакет NuGet SqlServerCompact предоставляет SQL Server Compact сборок ядра СУБД для приложения Contoso University. Но теперь не приложение, а веб-развертывание должно иметь возможность чтения SQL Server Compact баз данных, чтобы создавать скрипты для выполнения в SQL Server базах данных. Чтобы включить веб-развертывание для чтения SQL Server Compact баз данных, установите SQL Server Compact на компьютере разработки по следующей ссылке: Microsoft SQL Server Compact 4.0 с пакетом обновления 1 (SP1).

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

Чтобы выполнить публикацию в тестовой среде, необходимо создать профиль публикации, настроенный на использование вкладки Пакет/публикация SQL для публикации базы данных вместо параметров базы данных профиля публикации.

Сначала удалите существующий тестовый профиль.

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

Перейдите на вкладку Профиль .

Щелкните Управление профилями.

Выберите Тест, нажмите кнопку Удалить, а затем нажмите кнопку Закрыть.

Закройте мастер публикации веб-страницы , чтобы сохранить это изменение.

Затем создайте новый тестовый профиль и используйте его для публикации проекта.

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

Перейдите на вкладку Профиль .

Выберите <Создать...> в раскрывающемся списке и введите "Test" в качестве имени профиля.

В поле URL-адрес службы введите localhost.

В поле Сайт/приложение введите Веб-сайт по умолчанию/ContosoUniversity.

В поле URL-адрес назначения введите http://localhost/ContosoUniversity/.

Щелкните Далее.

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

Publish_Web_wizard_Settings_tab_Migrate

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

Нажмите кнопку Опубликовать.

Publish_Web_wizard_Preview_tab_Migrate

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

Создание базы данных SQL Server для рабочей среды

Теперь, когда вы развернули в тестовой среде, вы можете настроить развертывание в рабочей среде. Начните так же, как и в тестовой среде, создав базу данных для развертывания. Как вы помните из обзора, план размещения Cytanium Lite позволяет использовать только одну базу данных SQL Server, поэтому вы настроите только одну базу данных, а не две. Все таблицы и данные из баз данных членства и учебного SQL Server Compact будут развернуты в одной SQL Server базе данных в рабочей среде.

Перейдите на панель управления Cytanium по адресу http://panel.cytanium.com. Наведите указатель мыши на пункт Базы данных и щелкните SQL Server 2008.

Selecting_Databases_in_Control_Panel

На странице SQL Server 2008 щелкните Создать базу данных.

Selecting_Create_Database

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

Naming_the_database

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

Creating_a_database_user

Заполните обязательные поля на странице Свойства пользователя SQL :

  • Введите "ContosoUniversityUser" в качестве имени.
  • Введите пароль.
  • Выберите contosouSchool в качестве базы данных по умолчанию.
  • Выберите поле contosouSchool проверка.

SQL_User_Properties_page

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

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

Откройте окно Свойства проекта, перейдите на вкладку Пакет/Публикация SQL и убедитесь, что в раскрывающемся списке Конфигурация выбраны активные (выпуск) или Выпуск.

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

Настройка параметров развертывания для базы данных членства

Чтобы настроить параметры, применяемые к базе данных членства, выберите строку DefaultConnection-Deployment в таблице Записи базы данных .

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

Data Source=vserver01.cytanium.com;Initial Catalog={myDataBase};User Id={myUsername};Password={myPassword};

После замены трех переменных необходимый строка подключения выглядит следующим образом:

Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;

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

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

В поле Сценарии базы данных снимите флажок проверка рядом со скриптом Grant.sql.

Disable_Grant_script

Настройка параметров развертывания для учебной базы данных

Затем выберите строку SchoolContext-Deployment в таблице Записи базы данных , чтобы настроить параметры базы данных School.

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

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

В поле Сценарии базы данных снимите флажок проверка рядом со скриптом Grant.sql.

Сохраните изменения на вкладке Пакет или публикация SQL .

Настройка преобразования Web.Config для строк подключения к рабочим базам данных

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

Откройте Web.Production.config и замените connectionStrings элемент элементом connectionStrings , который выглядит, как показано в следующем примере. (Скопируйте connectionStrings только элемент, а не окружающие теги, которые предоставляются для отображения контекста.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

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

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

Теперь все готово к развертыванию в рабочей среде. Веб-развертывание считывает базы данных SQL Server Compact в папке App_Data проекта и повторно создает все их таблицы и данные в рабочей базе данных SQL Server. Чтобы выполнить публикацию с помощью параметров вкладки Пакет/Публикация веб-сайта , необходимо создать новый профиль публикации для рабочей среды.

Сначала удалите существующий профиль Production так же, как и тестовый профиль ранее.

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

Перейдите на вкладку Профиль .

Щелкните Управление профилями.

Выберите Рабочая среда, нажмите кнопку Удалить, а затем нажмите кнопку Закрыть.

Закройте мастер публикации веб-страницы , чтобы сохранить это изменение.

Затем создайте новый профиль production и используйте его для публикации проекта.

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

Перейдите на вкладку Профиль .

Нажмите кнопку Импорт и выберите файл PUBLISHSETTINGS, скачанный ранее.

На вкладке Подключение измените целевой URL-адрес на правильный временный URL-адрес, который в этом примере — http://contosouniversity.com.vserver01.cytanium.com.

Переименуйте профиль в Production. (Выберите вкладку Профиль и щелкните Управление профилями .

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

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

  1. Отправьте app_offline.htm, как показано в руководстве Развертывание в рабочей среде .
  2. Используйте функцию диспетчера файлов панели управления Cytanium, чтобы скопировать файлы aspnet-Prod.sdf и School-Prod.sdf с рабочего сайта в папку App_Data проекта ContosoUniversity. Это гарантирует, что данные, развертываемые в новой базе данных SQL Server, включают последние обновления, внесенные рабочим веб-сайтом.

Убедитесь, что на панели инструментов Web One Click Publish выбран рабочий профиль, а затем нажмите кнопку Опубликовать.

Если вы отправили app_offline.htm перед публикацией, необходимо использовать служебную программу диспетчера файлов на панели управления Cytanium, чтобы удалить app_offline.htm перед тестированием. Вы также можете одновременно удалить SDF-файлы из папки App_Data .

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

Переход на SQL Server Express LocalDB в разработке

Как описано в обзоре, в разработке лучше всего использовать то же ядро СУБД, что и в тестовой и рабочей среде. (Помните, что преимущество использования SQL Server Express в разработке заключается в том, что база данных будет работать одинаково в средах разработки, тестирования и рабочей среды.) В этом разделе вы настроите проект ContosoUniversity для использования SQL Server Express LocalDB при запуске приложения из Visual Studio.

Самый простой способ выполнить эту миграцию — позволить Code First и системе членства создать обе новые базы данных разработки. Использование этого метода для миграции требует трех шагов:

  1. Измените строки подключения, чтобы указать новые базы данных SQL Express LocalDB.
  2. Запустите средство администрирования веб-сайта, чтобы создать пользователя с правами администратора. При этом создается база данных членства.
  3. Используйте команду Code First Migrations update-database, чтобы создать и заполнить базу данных приложения.

Обновление строк подключения в файле Web.config

Откройте файлWeb.config и замените connectionStrings элемент следующим кодом:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  <add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\School-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

Создание базы данных членства

В Обозреватель решений выберите проект ContosoUniversity, а затем щелкните ASP.NET Конфигурация в меню Проект.

Перейдите на вкладку Безопасность.

Щелкните Создать или управление ролями, а затем создайте роль администратора .

Вернитесь на вкладку Безопасность.

Щелкните Создать пользователя, а затем выберите поле Администратор проверка и создайте пользователя с именем admin.

Закройте средство администрирования веб-сайта.

Создание учебной базы данных

Откройте окно Консоль диспетчера пакетов.

В раскрывающемся списке Проект по умолчанию выберите проект ContosoUniversity.DAL.

Введите следующую команду:

update-database

Code First Migrations применяет начальную миграцию, которая создает базу данных, а затем применяет миграцию AddBirthDate, затем запускает метод Seed.

Запустите сайт, нажав клавиши CONTROL-F5. Как и в тестовой и рабочей средах, запустите страницу Добавление учащихся , добавьте нового учащегося, а затем просмотрите нового учащегося на странице Учащиеся . Это позволит убедиться, что база данных School была создана и инициализирована и у вас есть к ней доступ на чтение и запись.

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

Очистка файлов SQL Server Compact

Вам больше не нужны файлы и пакеты NuGet, которые были включены для поддержки SQL Server Compact. При необходимости (этот шаг не является обязательным), можно очистить ненужные файлы и ссылки.

В Обозреватель решений удалите SDF-файлы из папки App_Data и папки amd64 и x86 из папки bin.

В Обозреватель решений щелкните правой кнопкой мыши решение (не один из проектов), а затем выберите Управление пакетами NuGet для решения.

В левой области диалогового окна Управление пакетами NuGet выберите Установленные пакеты.

Выберите пакет EntityFramework.SqlServerCompact и щелкните Управление.

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

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

Выполните ту же процедуру, чтобы удалить пакет SqlServerCompact . (Пакеты должны быть удалены в этом порядке, так как пакет EntityFramework.SqlServerCompact зависит от пакета SqlServerCompact .)

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