Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Управляемый экземпляр SQL Azure
С помощью агента SQL Server в Управляемом экземпляре AzureSQL можно создавать и планировать задания, которые могут периодически выполняться в одной или нескольких базах данных. Эти задания агента SQL выполняют запросы Transact-SQL (T-SQL) и выполняют задачи обслуживания. В этой статье рассматривается использование Агента SQL для Управляемого экземпляра SQL.
Примечание.
Агент SQL недоступен в Базе данных SQL Azure или Azure Synapse Analytics. Вместо этого мы рекомендуем автоматизацию заданий с помощью Elastic Jobs.
Когда следует использовать задания Агента SQL
Существует несколько сценариев, в которых можно использовать задание Агента SQL:
- Автоматизация задач управления, а также их добавление в расписание для запуска каждый рабочий день, в нерабочие часы и т. д.
- Внедрение изменений схемы, управление учетными данными, сбор данных о производительности или сбор телеметрических данных клиента.
- Обновите справочные данные (сведения, общие для всех баз данных) и загрузите данные из хранилища BLOB-объектов Azure. См. BULK_INSERT для получения сведений об аргументах, используемых для проверки подлинности в хранилище Blob Azure.
- Общие задачи обслуживания, в том числе
DBCC CHECKDB
для обеспечения целостности данных или обслуживание индекса для повышения производительности запросов. Настройка заданий для выполнения в коллекции баз данных на постоянной основе, например в часы наименьшей нагрузки. - Сбор результатов запроса из набора баз данных в центральную таблицу на постоянной основе. Запросы производительности можно постоянно выполнять и настраивать для активации дополнительных задач для выполнения.
- Сбор данных для создания отчетов
- Сбор данных из коллекции баз данных в одну целевую таблицу.
- Выполняйте запросы обработки данных с повышенным временем выполнения для большого набора баз данных, например коллекции телеметрии клиентов. Результаты собираются в одну целевую таблицу для дальнейшего анализа.
- Перемещения данных
- Создание заданий, которые реплицируют изменения, внесенные в базах данных, в другие базы данных, или собирают обновления, выполняемые в удаленных базах данных, и применяют изменения в базе данных.
- Создание заданий, загружающих данные в базы данных и обратно, с помощью SQL Server Integration Services (SSIS).
Задания агента SQL в Управляемом экземпляре SQL
Агент SQL Server выполняет задания агента SQL, используемые для автоматизации задач в Управляемом экземпляре SQL.
Задания агента SQL — это указанная серия скриптов T-SQL для базы данных. Используйте задания, чтобы определить задачу администрирования, которую можно запустить один или несколько раз и отслеживать ее успешное выполнение или сбой.
Задание может выполняться на одном локальном экземпляре или в нескольких удаленных экземплярах. Задание агента SQL — это внутренний компонент ядра СУБД, который выполняется в службе управляемого экземпляра SQL.
Существует несколько ключевых понятий в заданиях агента SQL:
- Шаги задания — это набор одного или нескольких шагов, которые должны выполняться в задании. Для каждого шага задания можно определить стратегию повторных попыток и действие, которое должно произойти, если шаг задания выполнен успешно или завершается сбоем.
- Расписания определяют, когда должно выполняться задание.
- Уведомления позволяют определить правила, используемые для уведомления операторов по электронной почте после завершения задания.
Шаги задания
Шаги задания агента SQL — это последовательности действий, которые должен выполнять агент SQL. Каждый шаг имеет следующий шаг, который должен выполняться, если шаг завершается успешно или завершается сбоем, и заданное число повторных попыток, если это не удается.
Агент SQL позволяет создавать различные типы шагов задания.
- Transact-SQL этапы задания, выполняющие один пакет Transact-SQL для базы данных.
- Команда ОС или шаги PowerShell, которые могут выполнять настраиваемый скрипт ОС.
- Действия задания SSIS, позволяющие загружать данные с помощью среды выполнения SSIS.
- Шаги репликации, которые могут публиковать изменения из базы данных в другие базы данных.
Примечание.
Дополнительные сведения см. в разделе Использование управляемого экземпляра Azure SQL с SQL Server Integration Services (SSIS) в службе данных Azure.
Репликация транзакций может реплицировать изменения из таблиц в другие базы данных в Управляемом экземпляре SQL Azure, Базе данных SQL Azure или SQL Server. Дополнительные сведения см. в разделе Настройка репликации в Управляемом экземпляре SQL Azure.
Другие типы шагов задания, такие как репликация слиянием и средство чтения очередей, в настоящее время не поддерживаются в Управляемом экземпляре SQL.
Расписания заданий
Расписание определяет время выполнения задания. Несколько заданий могут выполняться по тому же расписанию, а несколько расписаний могут применяться для одного задания.
Расписание может определить следующие условия для времени выполнения задания:
- Запустите каждый раз, когда запускается агент SQL Server. Задание активируется после каждой отказоустойчивости.
- Запустите один раз с определенной датой и временем, которая полезна для отложенного выполнения задания.
- Начните с повторяющегося расписания.
Дополнительные сведения о планировании задания Агента SQL см. в статье Schedule a Job (Планирование задания).
Примечание.
Управляемый экземпляр SQL Azure в настоящее время не позволяет запускать задание при простое ЦП.
Уведомления о вакансиях
Задания агента SQL позволяют получать уведомления об успешном завершении задания или в случае возникновения ошибки. Уведомления можно получать по электронной почте.
Сначала необходимо настроить функцию Database Mail в Управляемом экземпляре SQL, если она еще не включена:
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE
В качестве примера упражнения настройте учетную запись электронной почты для отправки уведомлений по электронной почте. Назначьте учетную запись профилю электронной почты с именем AzureManagedInstance_dbmail_profile
. Чтобы отправлять электронные письма с помощью заданий SQL Agent в SQL Managed Instance, необходимо иметь профиль с именем AzureManagedInstance_dbmail_profile
. В противном случае управляемый экземпляр SQL не может отправлять сообщения электронной почты через агент SQL.
Примечание.
Для почтового сервера мы рекомендуем использовать службы ретрансляции SMTP с проверкой подлинности для отправки электронной почты. Обычно эти службы ретрансляции подключаются через порты 25 или 587 для подключений TLS или порт 465 для SSL-подключений, однако компонент Database Mail можно настроить для использования любого порта. Для этих портов требуется новое правило для исходящего трафика в группе безопасности сети вашего управляемого экземпляра. Эти службы используются для сохранения репутации IP-адреса и домена, чтобы свести к минимуму вероятность того, что внешние домены будут отклонять ваши сообщения или помещать их в папку "Спам". Рассмотрим службу ретрансляции SMTP, уже прошедшую проверку подлинности на локальных серверах. SendGrid — одна из таких служб ретрансляции SMTP в Azure, но есть и другие.
Используйте следующий пример скрипта, чтобы создать учетную запись Database Mail и профиль, а затем связать их вместе:
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'SQL Agent Account',
@description = 'Mail account for Azure SQL Managed Instance SQL Agent system.',
@email_address = '$(loginEmail)',
@display_name = 'SQL Agent Account',
@mailserver_name = '$(mailserver)' ,
@username = '$(loginEmail)' ,
@password = '$(password)';
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'AzureManagedInstance_dbmail_profile',
@description = 'E-mail profile used for messages sent by Managed Instance SQL Agent.';
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'AzureManagedInstance_dbmail_profile',
@account_name = 'SQL Agent Account',
@sequence_number = 1;
Проверьте конфигурацию Database Mail с помощью T-SQL с помощью системной хранимой процедуры sp_send_dbmail :
DECLARE @body VARCHAR(4000) = 'The email is sent from ' + @@SERVERNAME;
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = 'ADD YOUR EMAIL HERE',
@body = 'Add some text',
@subject = 'Azure SQL Instance - test email';
Вы можете уведомить оператора, что с вашими заданиями агента SQL что-то произошло. Оператор определяет контактные сведения о лице, ответственном за обслуживание одного или нескольких экземпляров в Управляемом экземпляре SQL. Иногда обязанности оператора возлагаются на одно лицо.
В средах с несколькими управляемыми экземплярами SQL или экземплярами SQL Server многие пользователи могут совместно использовать обязанности оператора. Оператор не содержит информации о безопасности и не определяет принципала безопасности. В идеале оператор не является человеком, обязанности которого могут измениться, но группа рассылки электронной почты.
Создать операторы можно с помощью SQL Server Management Studio (SSMS) или сценария Transact-SQL, показанного в следующем примере:
EXEC msdb.dbo.sp_add_operator
@name=N'AzureSQLTeam',
@enabled=1,
@email_address=N'[email protected]';
Подтвердите успешную или неудачную отправку электронного письма с помощью журнала Database Mail в SSMS.
Вы можете изменить любое задание агента SQL и назначить операторы, которые уведомляются по электронной почте, если задание завершается, завершается сбоем или завершается успешно. Измените задание с помощью SSMS или следующего скрипта T-SQL:
EXEC msdb.dbo.sp_update_job @job_name=N'Load data using SSIS',
@notify_level_email=3, -- Options are: 1 on succeed, 2 on failure, 3 on complete
@notify_email_operator_name=N'AzureSQLTeam';
История работы
Управляемый экземпляр SQL в настоящее время не позволяет изменять свойства агента SQL, так как они хранятся в базовых значениях реестра. Это означает, что параметры настройки политики сохранения агента для записей истории заданий установлены по умолчанию в размере 1000 общих записей и максимум 100 записей истории на задание.
Дополнительные сведения см. в разделе Просмотр журнала заданий Агента SQL.
Обновлено членство в ролях базы данных
Если пользователи, связанные с учетными записями nonsysadmin, добавляются в любую из трех фиксированных ролей базы данных агента SQL в системной базе данных msdb
, возникает проблема, когда требуется явное предоставление EXECUTE
разрешений трем системным хранимым процедурам в базе данных master
. Если эта проблема возникла, отображается сообщение The EXECUTE permission was denied on the object <object_name> (Microsoft SQL Server, Error: 229)
об ошибке.
После добавления пользователей в предопределенную роль базы данных агента SQL (SQLAgentUserRole, SQLAgentReaderRole или SQLAgentOperatorRole) в msdb
, для каждого логина пользователя, добавленного в эти роли, выполните следующий скрипт T-SQL, чтобы явно предоставить EXECUTE
разрешения системным хранимым процедурам. В этом примере предполагается, что имя пользователя и имя входа совпадают:
USE [master]
GO
CREATE USER [login_name] FOR LOGIN [login_name];
GO
GRANT EXECUTE ON master.dbo.xp_sqlagent_enum_jobs TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_is_starting TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_notify TO [login_name];
Ограничения заданий Агента SQL в управляемом экземпляре SQL
Следует отметить различия между агентом SQL, доступным в SQL Server и как частью управляемого экземпляра SQL. Дополнительные сведения о различиях в поддерживаемых функциях между SQL Server и Управляемым экземпляром SQL см. в статье Отличия T-SQL Управляемого экземпляра SQL Azure от SQL Server.
Некоторые функции агента SQL, доступные в SQL Server, не поддерживаются в управляемом экземпляре SQL:
- Параметры агента SQL Server доступны только для чтения.
- Системная хранимая процедура
sp_set_agent_properties
не поддерживается.
- Системная хранимая процедура
- В настоящее время включение или отключение агента SQL не поддерживается. Агент SQL работает всегда.
- Хотя уведомления частично поддерживаются, следующие элементы не поддерживаются:
- Пейджер не поддерживается.
- NetSend не поддерживается.
- Оповещения не поддерживаются.
- Прокси-серверы не поддерживаются.
- Журнал событий не поддерживается.
- Триггер расписания заданий на основе простоя ЦП не поддерживается.
- Шаги задания для репликации слиянием не поддерживаются.
- Средство чтения очередей не поддерживается.
- Службы Analysis Services не поддерживаются.
- Запуск скрипта, хранящегося в качестве файла на диске, не поддерживается.
- Импорт внешних модулей, таких как dbatools и dbachecks, не поддерживается.
- PowerShell Core не поддерживается.
Связанный контент
- Что такое Управляемый экземпляр SQL Azure?
- Что нового в Управляемом экземпляре SQL Azure?
- Различия T-SQL между Управляемым экземпляром Базы данных SQL Azure и SQL Server
- Сравнение функций: База данных SQL Azure и Управляемый экземпляр SQL Azure
- Настройка Database Mail
- Устранение проблем с исходящими подключениями SMTP в Azure