В этой статье мы рассмотрим, как настроить агента эластичной работы в Azure SQL Server и запланировать выполнение скриптов на базах данных Azure SQL.
Агент SQL Server – это мощный компонент, используемый для планирования и выполнения заданий в SQL Server. Однако в Azure агент SQL Server доступен только в управляемых экземплярах, а не в отдельных базах данных. Для планирования и выполнения заданий на отдельных базах данных мы можем использовать функцию агента эластичной работы.
Функция агента эластичной работы позволяет нам планировать и выполнять задания на отдельной базе данных, всех базах данных на сервере или всех базах данных в эластичном пуле. Давайте рассмотрим шаги, необходимые для создания и планирования эластичной работы.
Создание агента эластичной работы
Прежде чем мы начнем, убедитесь, что у вас есть хотя бы одна база данных SQL с целевым уровнем обслуживания S0 или выше. Чтобы создать агента эластичной работы, выполните следующие шаги:
- Перейдите в портал Azure и введите “эластичная работа” в поле поиска.
- Выберите “Агенты эластичной работы” из списка.
- На странице агентов эластичной работы нажмите “Добавить”.
- Введите имя агента эластичной работы и выберите подписку.
- Примите условия и нажмите “ОК”.
- Выберите базу данных Azure SQL для агента эластичной работы. Допустимы только базы данных с целевым уровнем обслуживания S0 или выше.
- Нажмите “Создать”.
После завершения развертывания мы можем продолжить с дальнейшими шагами.
Создание учетных данных с ограничением на базу данных
На базе данных агента выполните следующий скрипт для создания необходимых учетных данных:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Password@123'; CREATE DATABASE SCOPED CREDENTIAL JobRun WITH IDENTITY = 'JobUser', SECRET = 'Password@123'; CREATE DATABASE SCOPED CREDENTIAL MasterCred WITH IDENTITY = 'MasterUser', SECRET = 'Password@123';
Эти учетные данные используются для подключения к целевой базе данных и выполнения скриптов. Учетные данные “JobRun” используются для подключения к целевой базе данных Azure SQL, а учетные данные “MasterCred” используются для подключения к базе данных master и перечисления всех баз данных на сервере или в эластичном пуле.
Создание группы целей и участников
Нам необходимо определить группу целей и ее участников. Тип цели может быть отдельной базой данных, сервером или эластичным пулом. Выполните следующий скрипт на базе данных агента, чтобы создать группу целей с отдельной базой данных в качестве типа цели:
EXEC jobs.sp_add_target_group 'DatabaseGroup1' EXEC jobs.sp_add_target_group_member 'DatabaseGroup1', @target_type = N'SqlDatabase', @server_name = 'rbcus01.database.windows.net', @database_name = N'TargetDB'
Создание входов в целевую базу данных мастера и пользовательских баз данных
Создайте входы с тем же паролем, который использовался при создании учетных данных на базе данных агента. Выполните следующий скрипт на базе данных мастера целевого сервера:
CREATE LOGIN MasterUser WITH PASSWORD = 'Password@123'; CREATE LOGIN JobUser WITH PASSWORD = 'Password@123'; CREATE USER MasterUser FROM LOGIN MasterUser;
На каждой целевой базе данных выполните следующий скрипт для создания пользователя:
CREATE USER JobUser FROM LOGIN JobUser; ALTER ROLE db_owner ADD MEMBER [JobUser];
Обратите внимание, что у входа должны быть соответствующие разрешения для успешного выполнения задания. Если вы выполняете процедуру с помощью задания, у входа должны быть достаточные разрешения для выполнения процедуры на целевой базе данных. Чтобы избежать проблем с разрешениями, добавьте пользователя в роль db_owner на целевой базе данных Azure SQL.
Создание задания и шагов задания
Выполните следующий скрипт на базе данных агента, чтобы создать задание и добавить к нему шаги:
EXEC jobs.sp_add_job @job_name = 'Sample T-SQL', @description = 'Print statement' EXEC jobs.sp_add_jobstep @job_name = 'Sample T-SQL', @command = N'print ''hi''', @credential_name = 'JobRun', @target_group_name = 'DatabaseGroup1'
Замените имя задания, команду и учетные данные в соответствии с вашими требованиями. В этом примере мы используем простое выражение print в качестве команды.
Планирование задания
Чтобы запустить задание вручную, выполните следующий скрипт на базе данных агента:
EXEC jobs.sp_start_job 'Sample T-SQL'
Чтобы проверить статус задания, выполните запрос к представлению “job_executions”:
SELECT * FROM jobs.job_executions
Вы также можете просмотреть статус задания в портале Azure, перейдя в “Все ресурсы”, щелкнув на агенте, а затем щелкнув на “Обзор”.
Чтобы запланировать задание, выполните следующий скрипт на базе данных агента:
EXEC jobs.sp_update_job @job_name = 'Sample T-SQL', @enabled = 1, @schedule_interval_type = 'Minutes', @schedule_interval_count = 1
Ниже приведены различные типы интервалов, которые можно указать для задания:
- ‘Once’
- ‘Minutes’
- ‘Hours’
- ‘Days’
- ‘Weeks’
- ‘Months’
Чтобы добавить новый шаг в существующее задание, выполните следующий скрипт на базе данных агента:
EXEC jobs.sp_add_jobstep @job_name = 'Sample T-SQL', @step_name = 'Execute procedure', @command = N'EXEC TM', @credential_name = 'myjobcred', @target_group_name = 'DatabaseGroup1'
Если вы добавляете более одного шага, вам необходимо указать имя шага.
Заключение
В этой статье мы