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

Область применения: База данных SQL Azure

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

Если вы не использовали задания обработки эластичных баз данных, изучите статью Automate management tasks using database jobs (Автоматизация управления задачами с помощью заданий базы данных).

Создание и настройка агента

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

  2. Создайте агент заданий обработки эластичных баз данных на портале или с помощью PowerShell.

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

Создание, запуск заданий и управление ими

  1. Создайте учетные данные для выполнения задания в базе данных заданий, используя PowerShell или T-SQL.

  2. Определите целевую группу (базы данных, в которых вы хотите запустить задание) с помощью PowerShell или T-SQL.

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

  4. Создайте задание с помощью PowerShell или T-SQL.

  5. Добавьте шаги задания с помощью PowerShell или T-SQL.

  6. Запустите задание с помощью PowerShell или T-SQL.

  7. Отслеживайте состояние выполнения задания на портале с использованием PowerShell или T-SQL.

    Портал

Учетные данные для выполнения заданий

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

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

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

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

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

Лучшие методики обеспечения безопасности

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

  • Предоставляйте доступ к API-интерфейсам только доверенным лицам.
  • Учетные данные должны иметь только те права, которые необходимы для выполнения шагов задания. Дополнительные сведения см. в статье Авторизация и разрешения.
  • При использовании члена целевой группы сервера или пула настоятельно рекомендуется создать отдельные учетные данные с правами в базе данных master для просмотра или перечисления баз данных, используемых для расширения списков серверов или пулов до выполнения задания.

Производительность, емкость и ограничения агента

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

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

Предотвращение сокращения производительности заданий целевой базы данных

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

Задайте количество параллельно запущенных баз данных, в которых выполняется задание, задав параметр @max_parallelism хранимой процедуры sp_add_jobstep в T-SQL.

Известные ограничения

Это текущие ограничения службы заданий обработки эластичных баз данных. Мы активно работаем над удалением максимально возможного множества этих ограничений.

Проблема Описание
После отработки отказа или перемещения в новый регион Azure необходимо повторно создать и запустить агента заданий обработки эластичных баз данных в новом регионе. Агенты и метаданные заданий службы заданий обработки эластичных баз данных хранятся в базе данных заданий. При любой отработке отказа и при любом перемещении ресурсов Azure в новый регион Azure в этот регион также будут перемещены база данных заданий, агент заданий и метаданные заданий. Однако агент заданий обработки эластичных баз данных является ресурсом только для вычислений, поэтому необходимо повторно создать и запустить агента в новом регионе, чтобы задания снова начали выполняться в этом регионе. После запуска агент заданий обработки эластичных баз данных возобновит выполнение заданий в новом регионе в соответствии с ранее определенным расписанием заданий.
Ограничение количества одновременных заданий. Эта предварительная версия ограничена 100 одновременными заданиями.
Объемные журналы аудита из базы данных заданий Агент заданий обработки эластичных баз данных постоянно опрашивает базу данных заданий, проверяя ее на наличие новых заданий и других операций CRUD. Если на сервере, на котором размещена база данных заданий, включен аудит, база может создавать большой объем журналов аудита. Эту проблему можно устранить путем фильтрации журналов аудита с помощью команды Set-AzSqlServerAudit с выражением предиката.

Пример:
Set-AzSqlServerAudit -ResourceGroupName "ResourceGroup01" -ServerName "Server01" -BlobStorageTargetState Enabled -StorageAccountResourceId "/subscriptions/7fe3301d-31d3-4668-af5e-211a890ba6e3/resourceGroups/resourcegroup01/providers/Microsoft.Storage/storageAccounts/mystorage" -PredicateExpression "database_principal_name <> '##MS_JobAccount##'"

Эта команда будет отфильтровывать на агенте заданий использование только журналов аудита базы данных заданий, а не всех целевых баз данных.
Частные конечные точки не поддерживаются Агенты эластичных заданий в настоящее время не могут подключаться к базам данных и эластичным пулам, которые ограничивают подключения к частным конечным точкам.
Использование базы данных уровня "Гипермасштабирование" в качестве базы данных заданий Использование базы данных уровня "Гипермасштабирование" в качестве базы данных заданий не поддерживается. Но задания обработки эластичных баз данных могут применяться к базам данных уровня "Гипермасштабирование" так же, как и к любой другой Базе данных SQL Azure.

Рекомендации по созданию заданий

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

Идемпотентные сценарии

Скрипты задания T-SQL должны быть идемпотентными. Идемпотентный означает, что, если сценарий выполнился успешно и запустился снова, его результат останется неизменным. Сценарий может завершиться ошибкой из-за временных проблем в сети. В этом случае задание будет автоматически пытаться выполнить сценарий указанное количество раз, после чего попытки будут прекращены. Идемпотентный сценарий дает неизменный результат даже после двух успешных запусков (или более).

Прежде чем создавать объект, рекомендуется сначала проверить, не существует ли он уже. Гипотетический пример показан ниже.

IF NOT EXISTS (SELECT * FROM sys.objects WHERE [name] = N'some_object')
    print 'Object does not exist'
    -- Create the object
ELSE
    print 'Object exists'
    -- If it exists, drop the object before recreating it.

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

Дальнейшие действия