Агент SQL ServerSQL Server Agent

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure (только управляемый экземпляр)нетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse

Важно!

Сейчас в управляемом экземпляре базы данных SQL Azure поддерживается большинство функций агента SQL Server (но не все).On Azure SQL Database Managed Instance, most, but not all SQL Server Agent features are currently supported. Подробные сведения см. в статье Различия T-SQL между управляемым экземпляром базы данных SQL Azure и SQL Server.See Azure SQL Database Managed Instance T-SQL differences from SQL Server for details.

SQL ServerSQL Server — это служба Microsoft Windows, выполняющая запланированные административные задачи, которые называются заданиями в SQL Server 2017SQL Server 2017.Agent is a Microsoft Windows service that executes scheduled administrative tasks, which are called jobs in SQL Server 2017SQL Server 2017.

В этом разделеIn This Topic

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

SQL ServerSQL Server использует SQL ServerSQL Server для хранения сведений о заданиях.Agent uses SQL ServerSQL Server to store job information. Задание состоит из одного или нескольких шагов.Jobs contain one or more job steps. Каждый шаг содержит собственную задачу, например создание резервной копии базы данных.Each step contains its own task, for example, backing up a database.

SQL ServerSQL Server может выполнять задания по расписанию в ответ на определенное событие или по требованию.Agent can run a job on a schedule, in response to a specific event, or on demand. Например, можно автоматизировать задачу создания резервной копии всех серверов компании, чтобы она выполнялась ежедневно по окончании рабочего дня.For example, if you want to back up all the company servers every weekday after hours, you can automate this task. Запланируйте запуск резервного копирования после 22:00 с понедельника по пятницу; если во время создания резервной копии возникает проблема, агент SQL Server регистрирует соответствующее событие и выдает уведомление.Schedule the backup to run after 22:00 Monday through Friday; if the backup encounters a problem, SQL Server Agent can record the event and notify you.

Примечание

Служба агента SQL ServerSQL Server по умолчанию отключена, если во время установки SQL Server 2017SQL Server 2017 явно не выбран автоматический запуск службы.By default, the SQL ServerSQL Server Agent service is disabled when SQL Server 2017SQL Server 2017 is installed unless the user explicitly chooses to autostart the service.

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

SQL ServerSQL Server использует следующие компоненты, чтобы определить задачи для выполнения, время для выполнения задач и порядок уведомления об успешном или неудачном завершении задач.Agent uses the following components to define the tasks to be performed, when to perform the tasks, and how to report the success or failure of the tasks.

ЗаданияJobs

Задание — это указанная последовательность действий, выполняемых агентом SQL ServerSQL Server .A job is a specified series of actions that SQL ServerSQL Server Agent performs. Используйте задания, чтобы определить задачу управления, которую можно выполнить однажды или неоднократно и контролировать на предмет успешного или неудачного выполнения.Use jobs to define an administrative task that can be run one or more times and monitored for success or failure. Задание может выполняться на одном локальном сервере или на нескольких удаленных серверах.A job can run on one local server or on multiple remote servers.

Важно!

SQL ServerSQL Server , которые выполнялись во время отработки отказа на экземпляре отказоустойчивого кластера SQL ServerSQL Server , не возобновляются после отработки отказа и переключения на другой узел отказоустойчивого кластера.Agent jobs that are running at the time of a failover event on a SQL ServerSQL Server failover cluster instance do not resume after failover to another failover cluster node. SQL ServerSQL Server Задания агента, которые выполнялись во время приостановки работы узла Hyper-V, не возобновляются, если приостановка вызывает отработку отказа с переходом на другой узел.Agent jobs that are running at the time a Hyper-V node is paused do not resume if the pause causes a failover to another node. Задания, выполнение которых было начато, но не завершилось в связи с событием отработки отказа, регистрируются в журнале как начатые, но дополнительных записей журнала о завершении или сбое нет.Jobs that begin but fail to complete because of a failover event are logged as started, but do not show additional log entries for completion or failure. SQL ServerSQL Server выглядят как незавершенные.Agent jobs in these scenarios appear to have never ended.

Выполнять задания можно несколькими способами:You can run jobs in several ways:

  • по одному или нескольким расписаниям;According to one or more schedules.

  • в ответ на одно или несколько предупреждений;In response to one or more alerts.

  • Посредством выполнения хранимой процедуры sp_start_job.By executing the sp_start_job stored procedure.

Каждое действие в задании является шагом задания.Each action in a job is a job step. Например шаг задания может состоять из выполнения инструкции Transact-SQLTransact-SQL , выполнения пакета служб Службы SSISSSIS или выдачи команды серверу служб Analysis Services.For example, a job step might consist of running a Transact-SQLTransact-SQL statement, executing an Службы SSISSSIS package, or issuing a command to an Analysis Services server. Шагами задания управляют как частью задания.Job steps are managed as part of a job.

Каждый шаг задания выполняется в указанном контексте безопасности.Each job step runs in a specific security context. Для шагов заданий, использующих Transact-SQLTransact-SQL, применяйте инструкцию EXECUTE AS, чтобы указать контекст безопасности для шага задания.For job steps that use Transact-SQLTransact-SQL, use the EXECUTE AS statement to set the security context for the job step. Для других типов шагов заданий используйте учетную запись-посредник, чтобы указать контекст безопасности для шага задания.For other types of job steps, use a proxy account to set the security context for the job step.

РасписанияSchedules

Расписание определяет время выполнения задания.A schedule specifies when a job runs. Сразу несколько заданий могут выполняться по одному и тому же расписанию, а несколько расписаний могут применяться к одному и тому же заданию.More than one job can run on the same schedule, and more than one schedule can apply to the same job. Расписание может определить следующие условия для времени выполнения задания:A schedule can define the following conditions for the time when a job runs:

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

  • каждый раз, когда использование ЦП компьютера будет достигать уровня, который определен как уровень простоя;Whenever CPU utilization of the computer is at a level you have defined as idle.

  • однажды, в указанные дату и время;One time, at a specific date and time.

  • Согласно повторяющемуся расписанию.On a recurring schedule.

Дополнительные сведения см. в разделе Создание и присоединение расписаний к заданиям.For more information, see Create and Attach Schedules to Jobs.

видны узлыAlerts

Предупреждение — это автоматический ответ на наступление указанного события.An alert is an automatic response to a specific event. Например, событие может быть заданием, которое начинает выполняться, или системным ресурсом, достигшим указанного порогового значения.For example, an event can be a job that starts or system resources that reach a specific threshold. Пользователь определяет условия, при которых выдается предупреждение.You define the conditions under which an alert occurs.

Предупреждение может быть реакцией на одно из следующих условий:An alert can respond to one of the following conditions:

  • SQL ServerSQL Server событияevents

  • SQL ServerSQL Server условия производительности;performance conditions

  • события инструментария управления Microsoft Windows (WMI) на компьютере, где работает агент SQL Server;Microsoft Windows Management Instrumentation (WMI) events on the computer where SQL Server Agent is running

Предупреждение может выполнять следующие действия:An alert can perform the following actions:

  • Уведомить один или несколько операторовNotify one or more operators

  • Осуществить запуск заданияRun a job

Дополнительные сведения см. в статье Предупреждения.For more information, see Alerts.

ОператорыOperators

Оператор определяет контактные сведения о лице, ответственном за обслуживание одного или нескольких экземпляров SQL ServerSQL Server.An operator defines contact information for an individual responsible for the maintenance of one or more instances of SQL ServerSQL Server. В некоторых организациях обязанности оператора возлагаются на одно лицо.In some enterprises, operator responsibilities are assigned to one individual. В организациях, использующих несколько серверов, обязанности оператора могут быть разделены между несколькими лицами.In enterprises with multiple servers, many individuals can share operator responsibilities. Оператор не обладает данными безопасности и не определяет субъекта безопасности.An operator does not contain security information, and does not define a security principal.

SQL ServerSQL Server может уведомлять операторов о предупреждениях одним или несколькими способами из нижеследующих:can notify operators of alerts through one or more of the following:

  • электронная почта;E-mail

  • пейджер (через электронную почту);Pager (through e-mail)

  • команда net send.net send

Примечание

Чтобы сделать возможной отправку уведомлений с помощью net send, служба Windows Messenger должна быть запущена на компьютере, где работает агент SQL ServerSQL Server .To send notifications by using net send, the Windows Messenger service must be started on the computer where SQL ServerSQL Server Agent resides.

Важно!

Режимы отправки уведомлений с помощью пейджера и команды net send будут удалены из агента SQL ServerSQL Server в следующей версии SQL ServerSQL Server.The Pager and net send options will be removed from SQL ServerSQL Server Agent in a future version of SQL ServerSQL Server. Старайтесь не использовать эти функции в новых разработках и предусмотрите соответствующие изменения в приложениях, которые используют их в настоящее время.Avoid using these features in new development work, and plan to modify applications that currently use these features.

Для отправки операторам уведомлений по электронной почте или на пейджер необходимо настроить агент SQL ServerSQL Server для использования компонента Database Mail.To send notifications to operators by using e-mail or pagers, you must configure SQL ServerSQL Server Agent to use Database Mail. Дополнительные сведения см. в разделе Database Mail.For more information, see Database Mail.

Можно определить оператора как псевдоним для группы лиц.You can define an operator as the alias for a group of individuals. Таким способом все члены этого псевдонима будут уведомлены одновременно.In this way, all members of that alias are notified at the same time. Дополнительные сведения см. в статье Операторы.For more information, see Operators.

Безопасность при администрировании агента SQL ServerSecurity for SQL Server Agent Administration

SQL ServerSQL Server использует предопределенные роли базы данных SQLAgentUserRole, SQLAgentReaderRoleи SQLAgentOperatorRole в базе данных msdb для управления доступом к агенту SQL ServerSQL Server для пользователей, не входящих в предопределенную роль сервера sysadmin .Agent uses the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole fixed database roles in the msdb database to control access to SQL ServerSQL Server Agent for users who are not members of the sysadmin fixed server role. Помимо этих предопределенных ролей базы данных, подсистемы и учетные записи-посредники позволяют администраторам базы данных гарантировать, что каждый шаг задания выполняется с минимальными разрешениями, необходимыми для выполнения задачи.In addition to these fixed database roles, subsystems and proxies help database administrators ensure that each job step runs with the minimum permissions required to perform its task.

РолиRoles

Доступ к агенту имеют члены предопределенных ролей базы данныхSQLAgentUserRole , SQLAgentReaderRole и SQLAgentOperatorRole в базе данныхmsdb , а также члены предопределенной роли сервера sysadmin SQL ServerSQL Server .Members of the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole fixed database roles in msdb, and members of the sysadmin fixed server role have access to SQL ServerSQL Server Agent. Пользователь, не принадлежащий ни к одной из этих ролей, не может использовать агент SQL ServerSQL Server .A user that does not belong to any of these roles cannot use SQL ServerSQL Server Agent. Дополнительные сведения о ролях, используемых агентом SQL ServerSQL Server , см. в разделе Обеспечение безопасности агента SQL Server.For more information on the roles used by SQL ServerSQL Server Agent, see Implement SQL Server Agent Security.

ПодсистемыSubsystems

Подсистема — это предопределенный объект, который содержит функции, доступные шагу задания.A subsystem is a predefined object that represents functionality that is available to a job step. Каждая учетная запись-посредник имеет доступ к одной или нескольким подсистемам.Each proxy has access to one or more subsystems. Подсистемы обеспечивают безопасность, поскольку разграничивают доступ учетных записей-посредников к функциям.Subsystems provide security because they delimit access to the functionality that is available to a proxy. Каждый шаг задания выполняется в контексте учетной записи-посредника, за исключением этапов задания Transact-SQLTransact-SQL .Each job step runs in the context of a proxy, except for Transact-SQLTransact-SQL job steps. На этапах задания Transact-SQLTransact-SQL применяйте команду EXECUTE AS, чтобы задать контекст безопасности для владельца задания.Transact-SQLTransact-SQL job steps use the EXECUTE AS command to set the security context to the owner of the Job.

SQL ServerSQL Server определяет подсистемы, перечисленные в следующей таблице:defines the subsystems listed in the following table:

Имя подсистемыSubsystem name ОписаниеDescription
Скрипт Microsoft ActiveXMicrosoft ActiveX Script Выполните шаг задания со скриптом ActiveX.Run an ActiveX scripting job step.

Предупреждение Подсистема сценариев ActiveX будет удалена из агента SQL ServerSQL Server в последующей версии MicrosoftMicrosoftSQL ServerSQL Server.Warning The ActiveX Scripting subsystem will be removed from SQL ServerSQL Server Agent in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
Операционная система (CmdExec)Operating System (CmdExec) Запустите исполняемую программу.Run an executable program.
PowerShellPowerShell Выполните шаг задания со скриптом PowerShell.Run a PowerShell scripting job step.
Распространитель репликацииReplication Distributor Выполните шаг задания, на котором активируется агент распространителя репликации.Run a job step that activates the replication Distribution Agent.
Репликация слияниемReplication Merge Выполните шаг задания, на котором активируется агент репликации слиянием.Run a job step that activates the replication Merge Agent.
Агент чтения очереди репликацииReplication Queue Reader Выполните шаг задания, на котором активируется агент чтения очереди репликации.Run a job step that activates the replication Queue Reader Agent.
Моментальный снимок репликацииReplication Snapshot Выполните шаг задания, на котором активируется агент моментальных снимков.Run a job step that activates the replication Snapshot Agent.
Агент чтения журнала транзакций репликацииReplication Transaction Log Reader Выполните шаг задания, на котором активируется агент чтения журнала.Run a job step that activates the replication Log Reader Agent.
Службы Analysis ServicesAnalysis Services CommandCommand Выполните команду служб Службы Analysis ServicesAnalysis Services .Run an Службы Analysis ServicesAnalysis Services command.
Службы Analysis ServicesAnalysis Services ЗапросQuery Выполните запрос служб Службы Analysis ServicesAnalysis Services .Run an Службы Analysis ServicesAnalysis Services query.
Службы SSISSSIS выполнение пакетов службpackage execution Выполните пакет служб Службы SSISSSIS .Run an Службы SSISSSIS package.

Примечание

Поскольку в шагах задания Transact-SQLTransact-SQL учетные записи-посредники не используются, какие-либо подсистемы агента SQL ServerSQL Server для шагов задания Transact-SQLTransact-SQL отсутствуют.Because Transact-SQLTransact-SQL job steps do not use proxies, there is no SQL ServerSQL Server Agent subsystem for Transact-SQLTransact-SQL job steps.

SQL ServerSQL Server применяет ограничения подсистемы принудительно, даже если обычно субъект безопасности для учетной записи-посредника имеет разрешение на выполнение задачи на шаге задания.Agent enforces subsystem restrictions even when the security principal for the proxy would normally have permission to run the task in the job step. Например, пользователь, являющийся членом предопределенной роли сервера sysadmin, не сможет выполнить шаг задания служб Службы SSISSSIS , если его учетная запись-посредник не имеет доступа к подсистеме служб Службы SSISSSIS , несмотря на то, что пользователь может выполнять пакеты служб Службы SSISSSIS .For example, a proxy for a user that is a member of the sysadmin fixed server role cannot run an Службы SSISSSIS job step unless the proxy has access to the Службы SSISSSIS subsystem, even though the user can run Службы SSISSSIS packages.

Учетные записи-посредникиProxies

SQL ServerSQL Server для управления контекстами безопасности использует учетные записи-посредники.Agent uses proxies to manage security contexts. Учетная запись-посредник может быть использована на нескольких шагах задания.A proxy can be used in more than one job step. Создавать учетные записи-посредники могут члены предопределенной роли сервера sysadmin .Members of the sysadmin fixed server role can create proxies.

Каждой учетной записи-посреднику соответствует учетная запись системы безопасности.Each proxy corresponds to a security credential. и может быть связана с множеством подсистем и множеством имен входа.Each proxy can be associated with a set of subsystems and a set of logins. Учетная запись-посредник может применяться только для шагов задания, которые используют связанную с этой учетной записью-посредником подсистему.The proxy can be used only for job steps that use a subsystem associated with the proxy. Чтобы создать шаг задания, использующий определенную учетную запись-посредник, владелец задания должен либо использовать связанное с ней имя входа, либо быть членом роли, имеющей неограниченный доступ к учетным записям-посредникам.To create a job step that uses a specific proxy, the job owner must either use a login associated with that proxy or be a member of a role with unrestricted access to proxies. Члены предопределенной роли сервера sysadmin имеют неограниченный доступ к учетным записям-посредникам.Members of the sysadmin fixed server role have unrestricted access to proxies. Члены ролей SQLAgentUserRole, SQLAgentReaderRoleи SQLAgentOperatorRole могут использовать только учетные записи-посредники, на которые им был предоставлен особый доступ.Members of SQLAgentUserRole, SQLAgentReaderRole, or SQLAgentOperatorRole can only use proxies to which they have been granted specific access. Каждому пользователю, входящему в одну из предопределенных ролей базы данных агента SQL ServerSQL Server , необходимо предоставить доступ к конкретным учетным записям-посредникам, чтобы пользователь мог создавать шаги задания, которые будут использовать эти учетные записи-посредники.Each user that is a member of any of these SQL ServerSQL Server Agent fixed database roles must be granted access to specific proxies so that the user can create job steps that use those proxies.

Используйте следующие шаги для настройки агента SQL ServerSQL Server для автоматического администрирования SQL ServerSQL Server .Use the following steps to configure SQL ServerSQL Server Agent to automate SQL ServerSQL Server administration:

  1. Определите, какие административные задачи или события сервера происходят регулярно, а также можно ли эти задачи или события администрировать программным путем.Establish which administrative tasks or server events occur regularly and whether these tasks or events can be administered programmatically. Подходящей для автоматизации является такая задача, которая включает предсказуемую последовательность шагов и выполняется в определенное время или в ответ на определенное событие.A task is a good candidate for automation if it involves a predictable sequence of steps and occurs at a specific time or in response to a specific event.

  2. Определите набор заданий, расписаний, предупреждений и операторов, используя среду SQL Server Management StudioSQL Server Management Studio, скрипты Transact-SQLTransact-SQL или управляющие объекты (SMO) SQL ServerSQL Server .Define a set of jobs, schedules, alerts, and operators by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL scripts, or SQL ServerSQL Server Management Objects (SMO). Дополнительные сведения см. в разделе Создание заданий.For more information, see Create Jobs.

  3. Запустите назначенные задания агента SQL ServerSQL Server .Run the SQL ServerSQL Server Agent jobs you have defined.

Примечание

В экземпляре SQL ServerSQL Serverпо умолчанию служба SQL ServerSQL Server имеет имя SQLSERVERAGENT.For the default instance of SQL ServerSQL Server, the SQL ServerSQL Server service is named SQLSERVERAGENT. В именованных экземплярах служба агента SQL ServerSQL Server имеет имя SQLAgent$имя_экземпляра.For named instances, the SQL ServerSQL Server Agent service is named SQLAgent$instancename.

Если запущено несколько экземпляров SQL ServerSQL Server, то чтобы автоматизировать общие для всех экземпляров задания, можно использовать администрирование нескольких серверов.If you are running multiple instances of SQL ServerSQL Server, you can use multiserver administration to automate tasks common across all instances. Дополнительные сведения см. в статье Автоматизация администрирования в масштабах предприятия.For more information, see Automated Administration Across an Enterprise.

Используйте следующие задачи, чтобы начать работу с агентом SQL ServerSQL Server .Use the following tasks to get started with SQL ServerSQL Server Agent:

ОписаниеDescription РазделTopic
Содержит инструкции по настройке агента SQL Server.Describes how to configure SQL Server Agent. Настройка агента SQL ServerConfigure SQL Server Agent
Описывает запуск, остановку и приостановку службы агента SQL Server.Describes how to start, stop, and pause the SQL Server Agent service. Запуск, остановка или приостановка службы агента SQL ServerStart, Stop, or Pause the SQL Server Agent Service
Описывает вопросы задания учетных записей для службы агента SQL Server.Describes considerations for specifying an account for the SQL Server Agent service. Выбор учетной записи для службы агента SQL ServerSelect an Account for the SQL Server Agent Service
Описывает использование журнала ошибок агента SQL Server.Describes how to use the SQL Server Agent error log. Журнал ошибок агента SQL ServerSQL Server Agent Error Log
Содержит инструкции по использованию объектов производительности.Describes how to use performance objects. Использование объектов производительностиUse Performance Objects
Описывает мастер планов обслуживания программу, которая используется для создания заданий, оповещений и операторов для автоматизации администрирования экземпляра SQL Server.Describes the Maintenance Plan Wizard, which is a utility that you can use to help create jobs, alerts, and operators to automate administration of an instance of SQL Server. Использование мастера планов обслуживанияUse the Maintenance Plan Wizard
Описывает автоматизацию задач администрирования с помощью агента SQL Server.Describes how to automate administrative tasks using SQL Server Agent. Задачи автоматизированного администрирования (агент SQL Server)Automated Administration Tasks (SQL Server Agent)

См. также:See Also

Настройка контактной зоныSurface Area Configuration