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


sp_add_job (Transact-SQL)

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

Значок ссылки на раздел Синтаксические обозначения Transact-SQL

Синтаксис

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.

    ПримечаниеПримечание

    Если значение аргумента 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 получает уведомление (по пейджеру, электронной почте или с помощью сетевого всплывающего сообщения); в случае успешного завершения задания выполняется его удаление.

ПримечаниеПримечание

В данном примере предполагается, что оператор с именем 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)