Partilhar via


sp_stop_job (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

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

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_stop_job
    [ [ @job_name = ] N'job_name' ]
    [ , [ @job_id = ] 'job_id' ]
    [ , [ @originating_server = ] N'originating_server' ]
    [ , [ @server_name = ] N'server_name' ]
[ ; ]

Argumentos

@job_name [ = ] N'job_name'

O nome do trabalho a ser interrompido. @job_name é sysname, com um padrão de NULL.

@job_id [ = ] 'job_id'

O número de identificação do trabalho a ser interrompido. @job_id é uniqueidentifier, com um padrão de NULL.

@originating_server [ = ] N'originating_server'

O nome do servidor de origem. Se for especificado, todos os trabalhos multisservidor serão interrompidos. @originating_server é sysname, com um padrão de NULL. Especifique esse parâmetro somente ao chamar sp_stop_job em um servidor de destino.

Não há suporte para o recurso de Administração de Vários Servidores (MSX/TSX) na Instância Gerenciada de SQL do Azure.

Observação

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

@server_name [ = ] N'server_name'

O nome do servidor de destino específico no qual um trabalho multisservidor será interrompido. @server_name é sysname, com um padrão de NULL. Especifique esse parâmetro somente ao chamar sp_stop_job um servidor de origem para um trabalho multisservidor.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Conjunto de resultados

Nenhum.

Comentários

sp_stop_job envia um sinal de parada para o banco de dados. Alguns processos podem ser interrompidos imediatamente e alguns devem atingir um ponto estável (ou um ponto de entrada para o caminho do código) antes de poderem parar. Algumas instruções Transact-SQL de longa execução, como BACKUP, , e alguns DBCC comandos, RESTOREpodem levar muito tempo para serem concluídas. Quando esses comandos estão em execução, pode demorar um pouco até 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 uma etapa do tipo CmdExec ou PowerShell, o processo que está sendo executado (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. Portanto, sp_stop_job deve ser usado somente em circunstâncias extremas se o trabalho contiver etapas do tipo CmdExec ou PowerShell.

Esse procedimento armazenado compartilha o nome de sp_stop_job com um objeto semelhante para o serviço de Trabalhos Elásticos do Azure para Banco de Dados SQL do Azure. Para obter informações sobre a versão dos trabalhos elásticos, consulte jobs.sp_stop_job (Trabalhos Elásticos do Azure).

Permissões

Você pode conceder EXECUTE permissões nesse procedimento, mas essas permissões podem ser substituídas durante uma atualização do SQL Server.

Outros usuários devem receber uma das seguintes funções de banco de dados fixas do msdb SQL Server Agent no banco de dados:

  • 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 interromper trabalhos que possuem. Os membros de SQLAgentOperatorRole podem interromper todos os trabalhos locais, incluindo trabalhos que pertencem a outros usuários. Os membros do sysadmin podem interromper todos os trabalhos locais e multisservidor.

Exemplos

O exemplo a seguir para um trabalho denominado Weekly Sales Data Backup.

USE msdb;
GO

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