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