Partilhar via


sp_stop_job (Transact-SQL)

Instrui o SQL Server Agent a parar a execução de um trabalho.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • [ [ @job_name =] 'job_name'
    O nome do trabalho a ser parado. job_name é sysname, com um padrão NULL.

  • [ [ @job_id =] job_id
    O número de identificação do trabalho a ser parado. job_id é uniqueidentifier, com um padrão NULL.

  • [ [ @originating_server =] 'master_server'
    O nome do servidor mestre. Se for especificado, todos os trabalhos multiservidor serão parados. master_server é nvarchar(128), com um padrão NULL. Somente especifique este parâmetro ao chamar sp_stop_job em um servidor de destino.

    ObservaçãoObservação

    Apenas um dos três primeiros parâmetros pode ser especificado.

  • [ [ @server_name =] 'target_server'
    O nome do servidor de destino específico no qual um trabalho multiservidor deve ser parado. target_server é nvarchar(128), com um padrão NULL. Somente especifique este parâmetro ao chamar sp_stop_job em um servidor mestre de um trabalho multiservidor.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Conjuntos de resultados

Nenhum

Comentários

Quando o SQL Server Agent recebe a notificação de parada, ele aguarda o término da etapa do trabalho atualmente em execução antes de processar a solicitação de cancelamento. Algumas instruções Transact-SQL longas como BACKUP, RESTORE e alguns comandos DBCC podem levar muito tempo para terminar. Quando elas estão em execução, pode demorar um pouco antes que o trabalho seja cancelado. A interrupção de um trabalho faz com que uma entrada "Trabalho Cancelado" seja registrada no histórico de trabalho.

Se um trabalho estiver executando no momento uma etapa do tipo CmdExec ou PowerShell, o processo em execução (por exemplo, MyProgram.exe) será forçado a terminar prematuramente. O fim prematuro pode resultar em comportamento imprevisível, como arquivos em uso pelo processo serem mantidos abertos. Conseqüentemente, sp_stop_job deverá ser usado somente em circunstâncias extremas se o trabalho contiver etapas do tipo CmdExec ou PowerShell.

Permissões

Por padrão, os membros da função de servidor fixa sysadmin podem executar este procedimento armazenado. Outros usuários deverão receber uma das seguintes funções de banco de dados fixas do SQL Server Agent no banco de dados msdb:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

Para obter detalhes sobre as permissões dessas funções, consulte Funções de banco de dados fixas do SQL Server Agent.

Os membros de SQLAgentUserRole e SQLAgentReaderRole só podem parar trabalhos que possuem. Os membros de SQLAgentOperatorRole podem parar todos os trabalhos locais, incluindo os pertencentes a outros usuários. Os membros de sysadmin podem parar todos os trabalhos locais e multiservidor.

Exemplos

O exemplo a seguir pára um trabalho denominado Weekly Sales Data Backup.

USE msdb ;
GO

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