sp_add_job (Transact-SQL)

Добавляет новое задание, выполняемое службой SQLServerAgent.

Синтаксис

sp_add_job [ @job_name = ] 'job_name'
     [ , [ @enabled = ] enabled ] 
     [ , [ @description = ] 'description' ] 
     [ , [ @start_step_id = ] step_id ] 
     [ , [ @category_name = ] 'category' ] 
     [ , [ @category_id = ] category_id ] 
     [ , [ @owner_login_name = ] 'login' ] 
     [ , [ @notify_level_eventlog = ] eventlog_level ] 
     [ , [ @notify_level_email = ] email_level ] 
     [ , [ @notify_level_netsend = ] netsend_level ] 
     [ , [ @notify_level_page = ] page_level ] 
     [ , [ @notify_email_operator_name = ] 'email_name' ] 
          [ , [ @notify_netsend_operator_name = ] 'netsend_name' ] 
     [ , [ @notify_page_operator_name = ] 'page_name' ] 
     [ , [ @delete_level = ] delete_level ] 
     [ , [ @job_id = ] job_id OUTPUT ] 

Аргументы

  • [ @job_name = ] 'job_name'
    Имя задания. Имя должно быть уникальным и не может содержать символ процента (%). Аргумент job_name имеет тип nvarchar(128) и не имеет значения по умолчанию.
  • [ @enabled = ] enabled
    Указывает состояние добавляемого задания. Аргумент enabled имеет тип tinyint и значение по умолчанию 1 (включено). Если значение аргумента равно 0, то задание отключено и не запускается согласно расписанию. Однако его можно запустить и вручную.
  • [ @description = ] 'description'
    Описание задания. Аргумент description имеет тип nvarchar(512) и значение по умолчанию NULL. Если аргумент description пропущен, используется значение «Описание недоступно».
  • [ @start_step_id = ] step_id
    Идентификационный номер первого этапа, выполняемого в ходе задания. Аргумент step_id имеет тип int и значение по умолчанию 1.
  • [ @category_name = ] 'category'
    Категория задания. Аргумент category имеет тип sysname и значение по умолчанию NULL.
  • [ @category_id = ] category_id
    Независимый от языка механизм указания категории задания. Аргумент category_id имеет тип int и значение по умолчанию NULL.
  • [ @owner_login_name = ] 'login'
    Имя учетной записи владельца задания. Аргумент login имеет тип sysname и значение по умолчанию NULL (текущая учетная запись). Задавать или изменять значения переменной @owner_login_name могут только члены фиксированной серверной роли sysadmin. Если доступ к аргументу @owner_login_name пытаются получить пользователи, не являющиеся членами роли sysadmin, хранимая процедура завершится с ошибкой.
  • [ @notify_level_eventlog = ] eventlog_level
    Значение, указывающее, когда следует помещать запись в журнал приложений Microsoft Windows для данного задания. Аргумент eventlog_level имеет тип int и может принимать одно из следующих значений.

    Значение Описание

    0

    Никогда

    1

    При успешном завершении

    2 (по умолчанию)

    При сбое

    3

    Всегда

  • [ @notify_level_email = ] email_level
    Указание, когда следует отправлять по электронной почте сообщение о выполнении задания. Аргумент email_level имеет тип int и значение по умолчанию 0 (не отправлять никогда). Аргумент email_level использует тот же набор значений, что и аргумент eventlog_level.
  • [ @notify_level_netsend = ] netsend_level
    Указание, когда следует отправлять сетевое сообщение о выполнении задания. Аргумент netsend_level имеет тип int и значение по умолчанию 0 (не отправлять никогда). Аргумент netsend_level использует тот же набор значений, что и аргумент eventlog_level.
  • [ @notify_level_page = ] page_level
    Когда следует отправлять пейджинговое сообщение после выполнения задания. Аргумент page_level имеет тип int и значение по умолчанию 0 (не отправлять никогда). Аргумент page_level использует тот же набор значений, что и параметр eventlog_level.
  • [ @notify_email_operator_name = ] 'email_name'
    Электронный адрес лица, которому отправляется сообщение по электронной почте при достижении уровня email_level. Аргумент email_name имеет тип sysname и значение по умолчанию NULL.
  • [ @notify_netsend_operator_name = ] 'netsend_name'
    Имя оператора, которому отправляется сетевое сообщение после выполнения данного задания. Аргумент netsend_name имеет тип sysname и значение по умолчанию NULL.
  • [ @notify_page_operator_name = ] 'page_name'
    Имя лица, которое уведомляется по пейджеру о выполнении данного задания. Аргумент page_name имеет тип sysname и значение по умолчанию NULL.
  • [ @delete_level = ] delete_level
    Значение, указывающее, когда следует удалить данное задание. Аргумент delete_value имеет тип int и значение по умолчанию 0 (не отправлять никогда). Аргумент delete_level использует тот же набор значений, что и аргумент eventlog_level.

    ms182079.note(ru-ru,SQL.90).gifПримечание.
    Если значение аргумента delete_level равно 3, задание выполняется только один раз, вне зависимости от назначенных для этого задания расписаний. Если в какой-то момент задание удаляет себя, журнал этого задания также удаляется.
  • [ @job_id = ] job_idOUTPUT
    Идентификационный номер, назначаемый заданию, если оно было создано успешно. Выходной аргумент job_id имеет тип uniqueidentifier и значение по умолчанию NULL.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Нет

Замечания

Аргумент @originating_server существует в процедуре sp_add_job, но не перечислен в списке ее аргументов. Аргумент @originating_server зарезервирован для внутреннего пользования.

После выполнения процедуры sp_add_job для добавления задания можно воспользоваться процедурой sp_add_jobstep для добавления этапов задания. Процедуру sp_add_jobschedule можно использовать для создания расписания, используемого службой агента SQL Server при выполнении заданий. Процедура sp_add_jobserver используется для указания экземпляра сервера SQL Server, на котором выполняется задание, а процедура sp_delete_jobserver — для удаления этого задания с сервера SQL Server.

Если задание должно выполняться на одном или нескольких целевых серверах в многосерверной среде, следует использовать функцию sp_apply_job_to_targets для определения целевых серверов или групп целевых серверов задания. Для удаления заданий с целевых серверов или из групп целевых серверов используется функция sp_remove_job_from_targets.

Среда SQL Server Management Studio обеспечивает доступный графический способ управления заданиями и рекомендуется для создания и управления инфраструктурой заданий.

Разрешения

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

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

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

Установка или изменение значения аргумента @owner_login_name доступны только членам фиксированной серверной роли sysadmin. В том случае, если к аргументу @owner_login_name попытаются получить доступ пользователи, не являющиеся членами роли sysadmin, процедура завершится с ошибкой.

Примеры

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

В этом примере создается новое задание с именем NightlyBackups.

USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'NightlyBackups' ;
GO

Б. Создание задания с уведомлением по пейджеру, электронной почте и по сети

Этот пример иллюстрирует создание задания с именем Ad hoc Sales Data Backup, в ходе которого пользователь François Ajenstat получает уведомление в случае сбоя задания (по пейджеру, электронной почте или с помощью сетевого всплывающего сообщения), а также удаление задания после успешного завершения.

ms182079.note(ru-ru,SQL.90).gifПримечание.
В данном примере предполагается, что оператор с именем François Ajenstat и имя входа françoisa уже существуют.
USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'Ad hoc Sales Data Backup', 
    @enabled = 1,
    @description = N'Ad hoc backup of sales data',
    @owner_login_name = N'françoisa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_level_netsend = 2,
    @notify_level_page = 2,
    @notify_email_operator_name = N'François Ajenstat',
    @notify_netsend_operator_name = N'François Ajenstat', 
    @notify_page_operator_name = N'François Ajenstat',
    @delete_level = 1 ;
GO

См. также

Справочник

sp_add_schedule (Transact-SQL)
sp_add_jobstep (Transact-SQL)
sp_add_jobserver (Transact-SQL)
sp_apply_job_to_targets (Transact-SQL)
sp_delete_job (Transact-SQL)
sp_delete_jobserver (Transact-SQL)
sp_remove_job_from_targets (Transact-SQL)
sp_help_job (Transact-SQL)
sp_help_jobstep (Transact-SQL)
sp_update_job (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005