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


sp_stop_job (Transact-SQL)

Дает указание агенту SQL Server остановить выполнение текущего задания.

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

Синтаксис

sp_stop_job 
      [@job_name =] 'job_name'
    | [@job_id =] job_id 
    | [@originating_server =] 'master_server'
    | [@server_name =] 'target_server'

Аргументы

  • [ @job_name =] 'job_name'
    Имя останавливаемого задания. Аргумент job_name имеет тип sysname и значение по умолчанию NULL.

  • [ @job_id =] job_id
    Идентификационный номер останавливаемого задания. Аргумент job_id имеет тип uniqueidentifier и значение по умолчанию NULL.

  • [ @originating_server =] 'master_server'
    Имя главного сервера. Если указано, останавливаются все многосерверные задания. Аргумент master_server имеет тип nvarchar(128) и значение по умолчанию NULL. Указывайте этот аргумент только при вызове хранимой процедуры sp_stop_job на целевом сервере.

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

    Может быть задан только один из первых трех аргументов.

  • [ @server_name =] 'target_server'
    Имя конкретного целевого сервера, на котором необходимо остановить выполнение многосерверного задания. Аргумент target_server имеет тип nvarchar(128) и значение по умолчанию NULL. Указывайте этот аргумент только при вызове хранимой процедуры sp_stop_job для многосерверного задания.

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

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

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

Нет

Замечания

Когда агент SQL Server получает уведомление об остановке, он ожидает завершения текущего выполняемого шага задания, прежде чем обработать запрос отмены. Для завершения некоторых долго выполняющихся инструкций Transact-SQL, таких как BACKUP, RESTORE и некоторых команд DBCC, может потребоваться длительное время. При выполнении таких инструкций отмена задания произойдет не сразу. При остановке задания в журнал заданий заносится запись «Задание отменено».

Если задание в данный момент выполняет шаг типа CmdExec или PowerShell, то выполняемый процесс (например, MyProgram.exe) принудительно завершается раньше времени. Преждевременное завершение может привести к непредсказуемому поведению: например, файлы, используемые процессом, могут остаться открытыми. Следовательно, если задание содержит шаги типа CmdExec или PowerShell, хранимую процедуру sp_stop_job нужно использовать только в экстренных ситуациях.

Разрешения

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

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

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

Члены ролей SQLAgentUserRole и SQLAgentReaderRole могут останавливать задания, которыми владеют. Члены роли SQLAgentOperatorRole могут останавливать все локальные задания, включая те, которыми владеют другие пользователи. Члены роли sysadmin могут останавливать любые локальные и многосерверные задания.

Примеры

В следующем примере останавливается задание с именем Weekly Sales Data Backup.

USE msdb ;
GO

EXEC dbo.sp_stop_job
    N'Weekly Sales Data Backup' ;
GO