Condividi tramite


sp_stop_job (Transact-SQL)

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

Icona di collegamento a un argomento Convenzioni 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 arrestare. job_name è di tipo sysname e il valore predefinito è NULL.

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

  • [ @originating_server =] 'master_server'
    Nome del server master. Se specificato, vengono arrestati 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 arrestare 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'arresto, 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'arresto di un processo comporta la registrazione di una voce relativa all'annullamento nella cronologia processo.

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 arrestare solo i processi di cui sono proprietari. I membri di SQLAgentOperatorRole possono arrestare tutti i processi locali, inclusi quelli 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

Vedere anche

Riferimento

sp_delete_job (Transact-SQL)

sp_help_job (Transact-SQL)

sp_start_job (Transact-SQL)

sp_update_job (Transact-SQL)

Stored procedure di sistema (Transact-SQL)