sp_stop_job (Transact-SQL)

Indica al Agente SQL Server que detenga la ejecución de un trabajo.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • [ @job_name =] 'job_name'
    Nombre del trabajo que se va a detener. job_name es de tipo sysname y su valor predeterminado es NULL.

  • [ @job_id = ] job_id
    Número de identificación del trabajo que se va a detener. job_id es de tipo uniqueidentifier y su valor predeterminado es NULL.

  • [ @originating_server =] 'master_server'
    Nombre del servidor principal. Si se especifica, se detienen todos los trabajos multiservidor. master_server es de tipo nvarchar(128) y su valor predeterminado es NULL. Especifique este parámetro sólo cuando llame a sp_stop_job en un servidor de destino.

    Nota

    Sólo se puede especificar uno de los tres primeros parámetros.

  • [ @server_name = ] 'target_server'
    Nombre del servidor de destino específico en que se va a detener un trabajo multiservidor. target_server es de tipo nvarchar(128) y su valor predeterminado es NULL. Especifique este parámetro sólo cuando llame a sp_stop_job en un servidor principal para un trabajo multiservidor.

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Ninguno

Comentarios

Cuando el Agente SQL Server recibe la notificación de detención, espera a que termine el paso de trabajo que se está ejecutando actualmente para procesar la solicitud de cancelación. Algunas instrucciones Transact-SQL de ejecución prolongada, como BACKUP, RESTORE y algunos comandos DBCC, pueden tardar mucho tiempo en finalizar. Cuando se ejecutan este tipo de instrucciones, el trabajo puede tardar cierto tiempo en cancelarse. Si se detiene un trabajo, se registrará una entrada de trabajo cancelado en el historial de trabajos.

Si un trabajo está ejecutando un paso de tipo CmdExec o PowerShell, se forzará la finalización prematura del proceso en ejecución (por ejemplo, MyProgram.exe). La finalización prematura puede provocar un comportamiento imprevisible como, por ejemplo, que los archivos que el proceso utiliza se mantengan abiertos. En consecuencia, sp_stop_job sólo deberá utilizarse en circunstancias muy especiales si el trabajo contiene pasos de tipo CmdExec o PowerShell.

Permisos

De manera predeterminada, este procedimiento almacenado lo pueden ejecutar los miembros de la función fija de servidor sysadmin. Al resto de usuarios se les debe conceder una de las siguientes funciones fijas de base de datos del Agente SQL Server en la base de datos msdb:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

Para obtener más información acerca de los permisos de estas funciones, vea Funciones fijas de base de datos del Agente SQL Server.

Los miembros de SQLAgentUserRole y SQLAgentReaderRole sólo pueden detener los trabajos que les pertenecen. Los miembros de SQLAgentOperatorRole pueden detener todos los trabajos locales, incluidos los que pertenecen a otros usuarios. Los miembros de sysadmin pueden detener todos los trabajos locales y multiservidor.

Ejemplos

En el ejemplo siguiente se detiene un trabajo denominado Weekly Sales Data Backup.

USE msdb ;
GO

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