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


sp_add_job (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Создает новое задание, выполняемое службой агент SQL Server.

Соглашения о синтаксисе Transact-SQL

Внимание

В Управляемом экземпляре Azure SQL в настоящее время поддерживается большинство функций агента SQL Server (но не все). Подробные сведения см. в статье Различия в T-SQL между Управляемым экземпляром SQL Azure и SQL Server.

Синтаксис

sp_add_job
         [ @job_name = ] N'job_name'
     [ , [ @enabled = ] enabled ]
     [ , [ @description = ] N'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 — nvarchar(128), без значения по умолчанию. Обязательный.

@enabled

Отображает состояние добавленного задания. параметр tinyint имеет значение по умолчанию 1 (включено). Если 0задание не включено и не выполняется в соответствии с расписанием. Однако его можно запустить вручную.

@description

Описание задания. @description — nvarchar(512) с значением по умолчаниюNULL. Если @description опущен, N'No description available' используется.

@start_step_id

Идентификатор первого этапа, выполняемого в ходе задания. @start_step_id имеет значение int с значением по умолчанию1.

@category_name

Категория задания. @category_name — sysname с значением по умолчаниюNULL.

@category_id

Независимый от языка механизм указания категории задания. @category_id имеет значение int с значением по умолчаниюNULL.

@owner_login_name

Имя входа, которое владеет заданием. @owner_login_name — sysname, с значением по умолчаниюNULL, которое интерпретируется как текущее имя входа. Только члены предопределенных ролей сервера sysadmin могут задать или изменить значение для @owner_login_name. Если пользователи, не являющиеся членами набора ролей sysadmin или изменяющие значение @owner_login_name, выполнение этой хранимой процедуры завершается ошибкой и возвращается ошибка.

@notify_level_eventlog

Значение, указывающее, когда следует помещать запись в журнал приложений Microsoft Windows для данного задания. @notify_level_eventlog является int и может быть одним из следующих значений:

значение Описание
0 Никогда
1 При успешном завершении
2 (по умолчанию) При сбое
3 Всегда

@notify_level_email

Значение, указывающее, нужно ли отправить сообщение электронной почты по завершении этого задания. @notify_level_email является int, с значением по умолчанию0, которое указывает никогда. @notify_level_email использует те же значения, что и @notify_level_eventlog.

@notify_level_netsend

Значение, указывающее, нужно ли отправить сетевое сообщение по завершении этого задания. @notify_level_netsend имеет значение int с значением по умолчанию0, которое указывает никогда. @notify_level_netsend использует те же значения, что и @notify_level_eventlog.

@notify_level_page

Значение, указывающее, нужно ли отправить сообщение на пейджер по завершении этого задания. @notify_level_page имеет значение int с значением по умолчанию0, которое указывает никогда. @notify_level_page использует те же значения, что и @notify_level_eventlog.

@notify_email_operator_name

Имя электронной почты пользователя для отправки электронной почты в момент достижения @notify_email_operator_name . @notify_email_operator_name — sysname с значением по умолчаниюNULL.

@notify_netsend_operator_name

Имя оператора, которому отправляется сетевое сообщение после выполнения данного задания. @notify_netsend_operator_name имеет имя sysname с значением по умолчаниюNULL.

@notify_page_operator_name

Имя лица, которое уведомляется по пейджеру о выполнении данного задания. @notify_page_operator_name — sysname с значением по умолчаниюNULL.

@delete_level

Значение, указывающее, нужно ли удалять задание. delete_value имеет значение int, с значением по умолчанию0, что означает никогда. @delete_level используют те же значения, что и @notify_level_eventlog.

Примечание.

Если @delete_level , 3задание выполняется только один раз, независимо от расписаний, определенных для задания. Если в какой-то момент задание удаляет себя, журнал этого задания также удаляется.

@job_id ВЫПУСК

Идентификационный номер задания, присваиваемый заданию после успешного создания. @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. Функция администрирования с несколькими серверами (MSX/TSX) не поддерживается в Управляемый экземпляр SQL Azure.

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

Эта хранимая процедура использует имя аналогичного sp_add_job объекта для службы заданий Elastic Azure для База данных SQL Azure. Сведения о версии эластичных заданий см. в разделе jobs.sp_add_job (задания Эластичных баз данных Azure).

Разрешения

Эта хранимая процедура принадлежит роли db_owner . Вы можете предоставить EXECUTE разрешения для любого пользователя, но эти разрешения могут быть переопределены во время обновления SQL Server.

Другим пользователям необходимо предоставить одну из следующих агент SQL Server предопределенных ролей базы данных в msdb базе данных:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

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

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

Примеры

А. Добавление задания

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

USE msdb;
GO

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

B. Добавление задания с пейджером, электронной почтой и чистой информацией о отправке

Этот пример иллюстрирует создание задания 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