Condividi tramite


sp_stop_job (Transact-SQL)

Richiede a SQL Server Agent di interrompere l'esecuzione di un processo.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • [ @job_name =] 'job_name'
    Nome del processo da interrompere. job_name è di tipo sysname e il valore predefinito è NULL.

  • [ @job_id =] job_id
    Numero di identificazione del processo da interrompere. job_id è di tipo uniqueidentifier e il valore predefinito è NULL.

  • [ @originating_server =] 'master_server'
    Nome del server master. Se viene specificato, vengono interrotti tutti i processi multiserver. master_server è di tipo nvarchar(128) e il 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 =] 'target_server'
    Nome del server di destinazione specifico in cui interrompere un processo multiserver. target_server è di tipo nvarchar(128) e il valore predefinito è NULL. Specificare questo parametro solo quando si chiama sp_stop_job in un server master per un processo multiserver.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Set di risultati

Nessuno

Osservazioni

Quando SQL Server Agent riceve la notifica dell'interruzione, attende che il passaggio del processo in esecuzione attualmente termini prima di elaborare l'annullamento della richiesta. Alcune istruzioni Transact-SQL con esecuzione prolungata, ad esempio BACKUP, RESTORE e alcuni comandi DBCC, possono richiedere un'elevata quantità di tempo per essere completate. Quando tali istruzioni sono in esecuzione, potrebbe trascorrere del tempo prima che il processo venga annullato. L'interruzione di un processo comporta la registrazione di una voce relativa all'annullamento nella cronologia processi.

Se in un processo è in esecuzione un passaggio di tipo CmdExec o PowerShell, viene impostata l'interruzione anticipata del processo eseguito, ad esempio MioProgramma.exe. Tale interruzione può causare comportamenti imprevisti, ad esempio i file utilizzati dal processo potrebbero restare aperti. Di conseguenza, se il processo contiene passaggi di tipo CmdExec o PowerShell, sp_stop_job dovrebbe essere utilizzato solo in circostanze particolari.

Autorizzazioni

Per impostazione predefinita, questa stored procedure può essere eseguita dai membri del ruolo predefinito del server sysadmin. Gli altri utenti devono appartenere a uno dei seguenti ruoli predefiniti del database di SQL Server Agent nel database msdb:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

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

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

Esempi

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

USE msdb ;
GO

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