Поделиться через


Агент SQL Server

применимо к:SQL ServerУправляемому экземпляру SQL Azure

В этой статье представлен обзор агента SQL Server, который является службой Microsoft Windows, которая выполняет запланированные административные задачи (называемые заданиями) в SQL Server и Управляемом экземпляре SQL Azure.

Это важно

В Azure SQL Managed Instanceв настоящее время поддерживается большинство функций агента SQL Server, но не все. Дополнительные сведения см. в статье «Различия T-SQL в управляемом экземпляре SQL Azure по сравнению с SQL Server».

Преимущества агента SQL Server

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

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

Примечание.

По умолчанию служба агента SQL Server отключена при установке SQL Server, если пользователь явно не выбирает автоматическое запуск службы.

Компоненты агента SQL Server

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

Используйте диспетчер конфигурации SQL Server для управления службой агента SQL Server и использования SQL Server Management Studio (SSMS) для управления свойствами агента SQL Server, заданиями, оповещениями, операторами и прокси-серверами в графическом пользовательском интерфейсе.

Вакансии

Задание — это указанный ряд действий, выполняемых агентом SQL Server. Используйте задания, чтобы определить задачу администрирования, которую можно запустить один или несколько раз и отслеживать ее успешное выполнение или сбой. Задание может выполняться на одном локальном или на нескольких удаленных серверах.

Это важно

Задания агента SQL Server, активные во время отказа в экземпляре отказоустойчивого кластера SQL Server, не продолжают выполнение после переключения на другой узел кластера. Задания агента SQL Server, которые выполняются в момент приостановки узла Hyper-V, не возобновляются, если пауза приводит к переключению на резервный узел. Задания, которые начинаются, но завершаются сбоем из-за переключения на резервную систему, регистрируются как начатые, однако не отображают дополнительные записи в журнале о завершении или сбое. Задания агента SQL Server в этих сценариях, как представляется, никогда не завершались.

Задания можно выполнять несколькими способами:

  • Согласно одному или нескольким расписаниям.

  • В ответ на одно или несколько оповещений.

  • Выполнив хранимую sp_start_job процедуру.

Каждое действие в задании — это шаг задания. Например, шаг задания может состоять из выполнения инструкции Transact-SQL, выполнения пакета служб SSIS или выдачи команды серверу Служб Analysis Services. Этапы задания управляются как часть задания.

Каждый шаг задания выполняется в определенном контексте безопасности. Для действий задания, использующих Transact-SQL, используйте инструкцию EXECUTE AS, чтобы задать контекст безопасности для шага задания. Для других типов действий задания используйте учетную запись прокси-сервера, чтобы задать контекст безопасности для шага задания.

Используйте sp_help_job системную хранимую процедуру, чтобы узнать сведения о конкретном задании. Используйте системную таблицу dbo.sysjobs для просмотра сведений о заданиях. Например, используйте следующую инструкцию Transact-SQL (T-SQL) для просмотра сведений обо всех заданиях на сервере:

USE MSDB
GO
SELECT job_id, [name] FROM dbo.sysjobs;

Расписание

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

  • При каждом запуске агента SQL Server.

  • Каждый раз, когда загрузка ЦП компьютера достигает уровня, который вы определили как простой.

  • Один раз в определенный день и время.

  • На регулярной основе.

Дополнительные сведения см. в статье "Создание и присоединение расписаний к заданиям".

Уведомления

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

Оповещение может реагировать на одно из следующих условий:

  • События SQL Server

  • Условия производительности SQL Server

  • События инструментария управления Microsoft Windows (WMI) на компьютере, на котором запущен агент SQL Server

Оповещение может выполнять следующие действия:

  • Уведомление одного или нескольких операторов

  • Выполнение задания

Дополнительные сведения см. в статье Оповещения.

Операторы

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

SQL Server может уведомлять операторов оповещений через ...

  • Эл. почта

  • Пейджер (по электронной почте)

  • net send

Примечание.

Чтобы отправлять уведомления с помощью net send, служба Windows Messenger должна быть запущена на компьютере, на котором находится агент SQL Server.

Это важно

Параметры Pager и net send будут удалены из агента SQL Server в одной из будущих версий. Избегайте использования этих функций при разработке новых приложений и планируйте изменять приложения, которые в настоящее время используют эти функции.

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

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

Безопасность для администрирования агента SQL Server

Агент SQL Server использует фиксированные роли msdb базы данных SQLAgentUserRole, SQLAgentReaderRole и SQLAgentOperatorRole для управления доступом к агенту SQL Server для пользователей, не являющихся членами предопределенной роли сервера sysadmin. Помимо этих фиксированных ролей базы данных, подсистемы и прокси-серверы помогают администраторам базы данных обеспечить выполнение каждого шага задания с минимальными разрешениями, необходимыми для выполнения задачи.

Роли

Члены предопределенных ролей базы данных SQLAgentUserRole, SQLAgentReaderRole, и SQLAgentOperatorRole, а также члены предопределенной серверной роли sysadmin имеют доступ к SQL Server Agent. Пользователь, который не принадлежит ни одной из этих ролей, не может использовать агент SQL Server. Дополнительные сведения о ролях, используемых агентом SQL Server, см. в разделе "Реализация безопасности агента SQL Server".

Подсистемы

Подсистема — это предопределенный объект, представляющий функциональные возможности, доступные для шага задания. Каждый прокси-сервер имеет доступ к одной или нескольким подсистемам. Подсистемы обеспечивают безопасность, так как они разделяют доступ к функциям, доступным прокси-серверу. Каждый шаг задания выполняется в контексте прокси, за исключением шагов задания Transact-SQL. Transact-SQL действия задания используют команду EXECUTE AS, чтобы задать контекст безопасности владельцу задания.

SQL Server определяет подсистемы, перечисленные в следующей таблице:

Имя подсистемы Описание
Скрипт Microsoft ActiveX Выполните шаг задания со сценариями ActiveX.

Предупреждение Подсистема сценариев ActiveX удаляется из агента SQL Server в будущей версии Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
Операционная система (CmdExec) Запустите исполняемую программу.
PowerShell Запустите шаг выполнения скрипта PowerShell.
Распространитель репликации Выполните шаг задания, который активирует Агент распределения репликации.
Объединение репликаций Выполните шаг задания, который активирует агент слияния репликации.
Средство чтения очередей репликации Запустите шаг задания, который активирует агент чтения очереди репликации.
Снимок репликации Запустите шаг задания для активации агента репликации мгновенного снимка.
Читатель журнала транзакций репликации Выполните шаг задания, который запускает агент репликации для чтения журналов.
Команда Analysis Services Выполните команду Analysis Services.
Запрос в серверах Analysis Services Запустите запрос службы Analysis Services.
Выполнение пакетов служб SSIS Запустите пакет служб SSIS.

Примечание.

Так как Transact-SQL действия задания не используют прокси-серверы, для Transact-SQL действий задания нет подсистемы агента SQL Server.

Агент SQL Server применяет ограничения подсистемы, даже если субъект безопасности прокси-сервера обычно имеет разрешение на выполнение задачи на шаге задания. Например, прокси-сервер для пользователя, являющегося членом предопределенной роли сервера sysadmin, не может выполнять шаг задания SSIS, если прокси-сервер не имеет доступа к подсистеме служб SSIS, даже если пользователь может запускать пакеты служб SSIS.

Прокси

Агент SQL Server использует прокси-серверы для управления контекстами безопасности. Прокси-сервер можно использовать в нескольких шагах задания. Члены предопределенных ролей сервера sysadmin могут создавать прокси-серверы.

Каждый прокси-сервер соответствует учетным данным безопасности. Каждый прокси-сервер может быть связан с набором подсистем и набором имен входа. Прокси-сервер можно использовать только для шагов задания, использующих подсистему, связанную с прокси-сервером. Чтобы создать шаг задания, использующего конкретный прокси-сервер, владелец задания должен использовать имя входа, связанное с этим прокси-сервером или членом роли с неограниченным доступом к прокси-серверам. Члены предопределенной роли сервера sysadmin имеют неограниченный доступ к прокси-серверам. Члены SQLAgentUserRole, SQLAgentReaderRole или SQLAgentOperatorRole могут использовать только прокси-серверы, к которым они получили определенный доступ. Каждому пользователю, являющегося членом любой из этих предопределенных ролей агента SQL Server, необходимо предоставить доступ к определенным прокси-серверам, чтобы пользователь смог создать шаги задания, использующие эти прокси-серверы.

Автоматизация администрирования

Чтобы автоматизировать администрирование SQL Server, выполните следующие действия.

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

  2. Определите набор заданий, расписаний, оповещений и операторов с помощью SQL Server Management Studio, Transact-SQL скриптов или объектов управления SQL Server (SMO). Дополнительные сведения см. в разделе "Создание заданий".

  3. Запустите определенные задания агента SQL Server.

Примечание.

Для экземпляра SQL Server по умолчанию служба SQL Server называется SQLSERVERAGENT. Для именованных экземпляров служба агента SQL Server называется SQLAgent$instancename.

Если выполняется несколько экземпляров SQL Server, можно использовать многосерверное администрирование для автоматизации задач, распространенных во всех экземплярах. Дополнительные сведения см. в статье "Автоматическое администрирование по всей организации".

Используйте следующие задачи, чтобы приступить к работе с агентом SQL Server:

Описание Статья
Описывает настройку агента SQL Server. Настройка агента SQL Server
Описание запуска, остановки и приостановки службы агента SQL Server. Запуск, остановка или приостановка службы агента SQL Server
Описывает рекомендации по указанию учетной записи для службы агента SQL Server. Выбор учетной записи для службы агента SQL Server
Описывает использование журнала ошибок агента SQL Server. Журнал ошибок агента SQL Server
Описывает использование объектов производительности. Использование объектов производительности
Описывает мастер плана обслуживания, который является служебной программой, которая используется для автоматизации администрирования экземпляра SQL Server с помощью заданий, оповещений и операторов. Использование мастера планов обслуживания
Описывает, как автоматизировать административные задачи с помощью агента SQL Server. Задачи автоматического администрирования (агент SQL Server)

NOSQLPS

Начиная с SQL Server 2019, можно отключить SQLPS. В первой строке шага задания типа PowerShell можно добавить #NOSQLPS, что останавливает автоматическую загрузку модуля SQLPS агентОМ SQL. Теперь задание агента SQL запускает версию PowerShell, установленную на компьютере, а затем вы можете использовать любой другой модуль PowerShell, который вам нравится.

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

#NOSQLPS
Import-Module -Name SqlServer