Управление схемой в приложении SaaS с помощью шаблона с однотенантной базой данных с использованием Базы данных SQL Azure

Применимо к:База данных SQL Azure

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

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

Из этого руководства вы узнаете, как выполнить следующие задачи:

  • Создание агента задания.
  • Вызов заданий T-SQL для выполнения во всех клиентских базах данных.
  • Обновление ссылочных данных во всех базах данных клиента.
  • Создание индекса для таблицы во всех базах данных клиента.

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

Общие сведения о шаблонах управления схемой SaaS

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

screen

Задания обработки эластичных баз данных

В 2024 году эластичные задания были выпущены в качестве общедоступного продукта с новыми функциями. Интегрированная функция База данных SQL Azure см. в заданиях эластичной базы данных.

Получение скриптов для SaaS-приложения Wingtip Tickets c однотенантной базой данных

Исходный код приложения и скрипты управления доступны в репозитории GitHub WingtipTicketsSaaS-DbPerTenant. Инструкции по скачиванию и разблокированию сценариев приложения SaaS Wingtip Tickets см. в статье Общие рекомендации по работе с примерами приложений SaaS Wingtip Tickets.

Создание агента заданий и базы данных для него

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

  1. В интегрированной среде сценариев PowerShell откройте файл …\Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
  2. Нажмите клавишу F5 для запуска скрипта.

Скрипт Demo-SchemaManagement.ps1 вызовет скрипт Deploy-SchemaManagement.ps1 для создания базы данных с именем osagent на сервере каталога. Затем он создает агент заданий, используя базу данных в качестве параметра.

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

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

Сначала проверьте типы мест проведения, включенные в каждой клиентской базе данных. Подключитесь к одной из клиентских баз данных в SQL Server Management Studio (SSMS) и проверьте таблицу VenueTypes. Выполнить запрос к этой таблице можно также в редакторе запросов на портале Azure, открыв его со страницы базы данных.

  1. Откройте SSMS и подключитесь к клиентскому серверу tenants1-dpt-<пользователь>.database.windows.net.
  2. Перейдите к базе данных contosoconcerthall на сервере tenants1-dpt-<пользователь> и запросите таблицу VenueTypes, чтобы убедиться, что места проведения Motorcycle Racing (Мотоциклетные гонки) и Swimming Club (Плавательный клуб) отсутствуют.

Теперь создадим задание, чтобы обновить таблицу VenueTypes во всех базах данных клиента, чтобы добавить новые типы мест.

Чтобы создать задание, используется набор системно хранимых процедур заданий, созданный в базе данных jobagent при создании агента заданий.

  1. В среде SSMS подключитесь к серверу каталогов: catalog-dpt-<пользователь>.database.windows.net.
  2. В среде SSMS откройте файл …\Learning Modules\Schema Management\DeployReferenceData.sql.
  3. Измените инструкцию: SET @wtpUser = <user>, заменив значение User значением, использованным при развертывании SaaS-приложения Wingtip Tickets c однотенантной БД.
  4. Убедитесь, что вы подключены к базе данных jobagent, и нажмите клавишу F5 для запуска скрипта.

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

  • sp_add_target_group создает целевую группу с именем DemoServerGroup.
  • sp_add_target_group_member определяет набор целевых баз данных. Сначала добавляется сервер tenants1-dpt-<пользователь>. Добавление сервера в качестве целевого объекта приводит к тому, что базы данных на этом сервере во время выполнения задания будут включены в задание. Затем базы данных basetenantdb и adhocreporting (в следующем руководстве) будут добавлены в качестве целевых объектов.
  • sp_add_job создает задание с названием Reference Data Deployment (Развертывание эталонных данных).
  • sp_add_jobstep создает шаг задания с текстом команды T-SQL для обновления ссылочной таблицы VenueTypes.
  • Остальные представления в скрипте отображают сведения о существовании объектов и отслеживают выполнение задания мониторинга. С помощью этих запросов можно просмотреть значение состояния в столбце lifecycle, чтобы определить, когда задание будет завершено во всех целевых базах данных.

После выполнения скрипта вы можете проверить, были ли эталонные данные обновлены. В SSMS перейдите к базе данных contosoconcerthall на сервере tenants1-dpt -<пользователь> и запросите таблицу VenueTypes. Убедитесь, что Мотоциклетные гонки и Плавательный клубтеперь присутствуют.

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

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

Создайте задание, используя те же системно хранимые процедуры задания.

  1. Откройте среду SSMS и подключитесь к серверу catalog-dpt-<пользователь>.database.windows.net.
  2. Откройте файл …\Learning Modules\Schema Management\OnlineReindex.sql.
  3. Щелкните правой кнопкой мыши, выберите Подключение и подключитесь к серверу catalog-dpt-user.database.windows.net<>, если он еще не подключен.
  4. Убедитесь, что вы подключены к базе данных jobagent, и нажмите клавишу F5 для запуска скрипта.

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

  • sp_add_job создает новое задание с именем "Online Reindex PK__VenueTyp__265E44FD7FD4C885"
  • sp_add_jobstep создает шаг задания с текстом команды T-SQL для обновления индекса.
  • Остальные представления в скрипте отслеживают выполнение задания. С помощью этих запросов можно просмотреть значение состояния в столбце lifecycle, чтобы определить, когда задание будет успешно завершено во всех целевых элементах группы.

Следующие шаги

Из этого руководства вы узнали, как выполнять такие задачи:

  • Создание агента заданий для выполнения заданий T-SQL в нескольких базах данных.
  • Обновление ссылочных данных во всех базах данных клиента.
  • Создание индекса для таблицы во всех базах данных клиента.

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

Дополнительные ресурсы