Открыть сервис

SQL Server Agent

SQL Server Agent — это компонент Microsoft SQL Server, предназначенный для автоматизации выполнения административных и служебных задач в реляционной системе управления базами данных. Он представляет собой службу Windows, которая работает в фоновом режиме и позволяет создавать, планировать, управлять и выполнять задания (jobs), а также реагировать на возникающие события и выдавать оповещения. SQL Server Agent является ключевым инструментом для обеспечения непрерывности работы базы данных, периодического обслуживания (такого как резервное копирование и обновление статистики), мониторинга и решения проблем без постоянного вмешательства администратора.

История и версии

SQL Server Agent впервые появился в версии SQL Server 6.5 (выпуск 1996 года) и назывался SQL Executive. В последующих версиях (SQL Server 7.0, 1998 год) он был переименован в SQL Server Agent, а его функциональность была значительно расширена. Начиная с SQL Server 2005 (выпущен в 2005 году), компонент был включён в состав всех выпусков (изданий) продукта, кроме базового Express Edition, который не поддерживает службу SQL Server Agent. В современных версиях (2016, 2019, 2022) SQL Server Agent продолжает развиваться: улучшено взаимодействие с PowerShell, добавлена поддержка runbook и интеграция с Azure DevOps, а также возможность управления заданиями через графический интерфейс SQL Server Management Studio (SSMS) и Transact-SQL.

Функциональные возможности

Основные возможности SQL Server Agent включают:

Компоненты и архитектура

SQL Server Agent состоит из двух основных частей:

  1. Служба Windows. Запускается автоматически при старте операционной системы (если настроено). Служба может использовать учётную запись NT Service\SQLSERVERAGENT (начиная с SQL Server 2012) или локальную/доменную учётную запись. Учётная запись службы должна иметь права доступа к файловой системе, реестру, сети и, при необходимости, к Active Directory.
  2. Хранилище объектов. Все задания, расписания, оповещения и операторы хранятся в базах данных SQL Server: в системной базе msdb (таблицы sysjobs, sysjobsteps, schedules, sysalerts и другие). Архитектура позволяет управлять SQL Server Agent удалённо через SSMS, T-SQL или инструменты командной строки (PowerShell, SQLCMD).

Управление заданиями

Создание задания

Задание создаётся с помощью:

Пример базового T-SQL скрипта для создания задания, выполняющего резервное копирование базы данных:

``sql USE msdb; GO EXEC dbo.sp_add_job @job_name = N'Backup_AdventureWorks'; EXEC dbo.sp_add_jobstep @job_name = N'Backup_AdventureWorks', @step_name = N'Backup_Data', @subsystem = N'TSQL', @command = N'BACKUP DATABASE AdventureWorks TO DISK = ''D:\Backups\AdventureWorks.bak'''; EXEC dbo.sp_add_schedule @schedule_name = N'Daily_Backup', @freq_type = 4, -- ежедневно @active_start_time = 220000; -- 22:00 EXEC dbo.sp_attach_schedule @job_name = N'Backup_AdventureWorks', @schedule_name = N'Daily_Backup'; EXEC dbo.sp_add_jobserver @job_name = N'Backup_AdventureWorks'; ``

Типы шагов заданий

Шаги заданий могут быть следующих типов (subsystem):

Управление выполнением

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

Оповещения и уведомления

SQL Server Agent позволяет настроить оповещения, которые активируются при возникновении определённых событий. Например:

Уведомления могут быть отправлены:

Безопасность

SQL Server Agent работает в контексте безопасности Windows. Для выполнения заданий (особенно с шагами CmdExec или PowerShell) требуется, чтобы учётная запись службы имела соответствующие права. Прокси-учётные записи позволяют делегировать выполнение шагов другому пользователю, не давая ему доступ к службе напрямую.

Разграничение доступа к управлению SQL Server Agent осуществляется через роли базы данных msdb:

Ограничения и особенности

Применение

SQL Server Agent широко используется в следующих сценариях:

Альтернативы

Существуют и другие средства автоматизации для SQL Server:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →