Published on

June 16, 2019

Настройка агента эластичной работы в Azure SQL Server

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

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

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

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

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

  1. Перейдите в портал Azure и введите “эластичная работа” в поле поиска.
  2. Выберите “Агенты эластичной работы” из списка.
  3. На странице агентов эластичной работы нажмите “Добавить”.
  4. Введите имя агента эластичной работы и выберите подписку.
  5. Примите условия и нажмите “ОК”.
  6. Выберите базу данных Azure SQL для агента эластичной работы. Допустимы только базы данных с целевым уровнем обслуживания S0 или выше.
  7. Нажмите “Создать”.

После завершения развертывания мы можем продолжить с дальнейшими шагами.

Создание учетных данных с ограничением на базу данных

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

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'

Если вы добавляете более одного шага, вам необходимо указать имя шага.

Заключение

В этой статье мы

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.