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_jobserver (Transact-SQL)
sp_apply_job_to_targets (Transact-SQL)
sp_delete_jobserver (Transact-SQL)
sp_remove_job_from_targets (Transact-SQL)