Поделиться через


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

Джейсон Ли

Примечание

С момента написания этой статьи поставщики членства ASP.NET были заменены ASP.NET Identity. Мы настоятельно рекомендуем обновить приложения для использования платформы ASP.NET Identity , а не поставщиков членства, которые были представлены на момент написания этой статьи. ASP.NET Identity имеет ряд преимуществ по сравнению с системой членства ASP.NET, в том числе :

  • более высокая производительность;
  • Улучшенная расширяемость и тестируемость
  • Поддержка OAuth, OpenID Connect и двухфакторной проверки подлинности
  • Поддержка удостоверений на основе утверждений
  • Улучшенное взаимодействие с ASP.Net Core

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

Этот раздел является частью серии учебников, основанных на требованиях к развертыванию на предприятии вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения диспетчера контактов для представления веб-приложения с реалистичным уровнем сложности, включая приложение ASP.NET MVC 3, службу Windows Communication Foundation (WCF) и проект базы данных.

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

Какие проблемы возникают при развертывании базы данных членства?

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

К сожалению, ASP.NET базах данных членства возникают некоторые особые проблемы, которые усложняют это решение:

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

Выбор стратегии базы данных членства

Используйте следующие рекомендации при выборе способа подготовки базы данных членства в среде корпоративного сервера.

  • По возможности не развертывайте базы данных членства. Вместо этого создайте базу данных членства вручную на целевом сервере базы данных. Если вы еще не настроили схему базы данных членства, вы можете просто создать новую в месте назначения с помощью средства регистрации ASP.NET SQL Server (aspnet_regsql.exe).
  • Если у вас нет возможности развернуть базу данных членства( например, если вы внесли значительные изменения в схему базы данных), следует выполнить развертывание базы данных членства только на схеме, чтобы исключить данные учетной записи пользователя, а затем запустить скрипт после развертывания, чтобы добавить необходимые данные конфигурации. Общие рекомендации по этим подходам см. в статье Практическое руководство. Развертывание базы данных членства ASP.NET без включения учетных записей пользователей.

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

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

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

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

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

  1. Используйте действие Импорт VSDBCMD, чтобы создать DBSCHEMA-файл для исходной базы данных членства. Эта процедура описана в разделе Практическое руководство. Импорт схемы из командной строки.
  2. Используйте действие РАЗВЕРТЫВАНИЕ VSDBCMD, чтобы развернуть DBSCHEMA-файл в целевой базе данных членства. Эта процедура описана в справочнике по командной строке для VSDBCMD.EXE (развертывание и импорт схемы).

Заключение

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

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

Дополнительные рекомендации и примеры использования VSDBCMD см. в справочнике по командной строке для VSDBCMD.EXE (развертывание и импорт схемы) и Практическое руководство. Импорт схемы из командной строки. Дополнительные сведения об использовании aspnet_regsql.exe для создания баз данных членства см. в статье Средство регистрации ASP.NET SQL Server (aspnet_regsql.exe). Более общие рекомендации по развертыванию баз данных членства см. в разделе Практическое руководство. Развертывание базы данных членства ASP.NET без включения учетных записей пользователей.