Condividi tramite


sp_stop_job (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Indica a SQL Server Agent di arrestare l'esecuzione di un processo.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @job_name = ] N'job_name'

Nome del processo da arrestare. @job_name è sysname, con il valore predefinito NULL.

[ @job_id = ] 'job_id'

Numero di identificazione del processo da arrestare. @job_id è uniqueidentifier, con un valore predefinito .NULL

[ @originating_server = ] N'originating_server'

Nome del server di origine. Se specificato, vengono arrestati tutti i processi multiserver. @originating_server è sysname, con un valore predefinito .NULL Specificare questo parametro solo quando si chiama sp_stop_job in un server di destinazione.

La funzionalità Amministrazione multiserver (MSX/TSX) non è supportata in Istanza gestita di SQL di Azure.

Nota

È possibile specificare solo uno dei primi tre parametri.

[ @server_name = ] N'server_name'

Nome del server di destinazione specifico in cui arrestare un processo multiserver. @server_name è sysname, con un valore predefinito .NULL Specificare questo parametro solo quando si chiama sp_stop_job in un server di origine per un processo multiserver.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Set di risultati

Nessuno.

Osservazioni:

sp_stop_job invia un segnale di arresto al database. Alcuni processi possono essere arrestati immediatamente e alcuni devono raggiungere un punto stabile (o un punto di ingresso al percorso del codice) prima che possano arrestarsi. Per completare alcune istruzioni Transact-SQL a esecuzione prolungata, ad BACKUPesempio , RESTOREe alcuni DBCC comandi possono richiedere molto tempo. Quando questi comandi sono in esecuzione, potrebbero essere necessari alcuni minuti prima dell'annullamento del processo. L'arresto di un processo comporta la registrazione di una voce relativa all'annullamento nella cronologia processo.

Se un processo esegue attualmente un passaggio di tipo CmdExec o PowerShell, il processo in esecuzione (ad esempio, MyProgram.exe) viene forzato a terminare prematuramente. Tale interruzione può causare comportamenti imprevisti, ad esempio i file utilizzati dal processo potrebbero restare aperti. Pertanto, sp_stop_job deve essere usato solo in circostanze estreme se il processo contiene passaggi di tipo CmdExec o PowerShell.

Questa stored procedure condivide il nome di con un oggetto simile per il servizio Processi elastici di sp_stop_job Azure per database SQL di Azure. Per informazioni sulla versione dei processi elastici, vedere jobs.sp_stop_job (processi elastici di Azure).

Autorizzazioni

È possibile concedere EXECUTE autorizzazioni per questa procedura, ma queste autorizzazioni potrebbero essere sottoposte a override durante un aggiornamento di SQL Server.

È necessario concedere ad altri utenti uno dei ruoli predefiniti del database di SQL Server Agent seguenti:msdb

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Per informazioni dettagliate sulle autorizzazioni di questi ruoli, vedere Ruoli di database predefiniti di SQL Server Agent.

I membri di SQLAgentUserRole e SQLAgentReaderRole possono arrestare solo i processi di cui sono proprietari. I membri di SQLAgentOperatorRole possono arrestare tutti i processi locali, inclusi i processi di proprietà di altri utenti. I membri di sysadmin possono arrestare tutti i processi locali e multiserver.

Esempi

Nell'esempio seguente viene arrestato un processo denominato Weekly Sales Data Backup.

USE msdb;
GO

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