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.
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 BACKUP
esempio , RESTORE
e 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
Questa stored procedure è di proprietà del ruolo db_owner . È possibile concedere EXECUTE
autorizzazioni per qualsiasi utente, ma queste autorizzazioni possono 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