Compartir a través de


sp_stop_job (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

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

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @job_name = ] N'job_name'

Nombre del trabajo que se va a detener. @job_name es sysname, con un valor predeterminado de NULL.

[ @job_id = ] 'job_id'

Número de identificación del trabajo que se va a detener. @job_id es uniqueidentifier, con un valor predeterminado de NULL.

[ @originating_server = ] N'originating_server'

Nombre del servidor de origen. Si se especifica, se detienen todos los trabajos multiservidor. @originating_server es sysname, con un valor predeterminado de NULL. Especifique este parámetro solo cuando llame a sp_stop_job en un servidor de destino.

La característica Administración multiservidor (MSX/TSX) no se admite en Azure SQL Instancia administrada.

Nota:

Solo se puede especificar uno de los tres primeros parámetros.

[ @server_name = ] N'server_name'

Nombre del servidor de destino específico en que se va a detener un trabajo multiservidor. @server_name es sysname, con un valor predeterminado de NULL. Especifique este parámetro solo cuando llame a sp_stop_job en un servidor de origen para un trabajo multiservidor.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto de resultados

Ninguno.

Comentarios

sp_stop_job envía una señal de detención a la base de datos. Algunos procesos se pueden detener inmediatamente y algunos deben alcanzar un punto estable (o un punto de entrada a la ruta de acceso del código) antes de que puedan detenerse. Algunas instrucciones Transact-SQL de ejecución prolongada, como BACKUP, RESTOREy algunos DBCC comandos pueden tardar mucho tiempo en finalizar. Cuando se ejecutan estos comandos, puede tardar un tiempo antes de que se cancele el trabajo. Si se detiene un trabajo, se registrará una entrada de trabajo cancelado en el historial de trabajos.

Si un trabajo está ejecutando actualmente un paso de tipo CmdExec o PowerShell, el proceso que se ejecuta (por ejemplo, MyProgram.exe) se ve obligado a finalizar prematuramente. La finalización prematura puede provocar un comportamiento imprevisible como, por ejemplo, que los archivos que el proceso utiliza se mantengan abiertos. Por lo tanto, sp_stop_job solo se debe usar en circunstancias extremas si el trabajo contiene pasos de tipo CmdExec o PowerShell.

Este procedimiento almacenado comparte el nombre de sp_stop_job con un objeto similar para el servicio Trabajos elásticos de Azure para Azure SQL Database. Para obtener información sobre la versión de trabajos elásticos, consulte jobs.sp_stop_job (Trabajos elásticos de Azure).

Permisos

Puede conceder EXECUTE permisos en este procedimiento, pero estos permisos se pueden invalidar durante una actualización de SQL Server.

A otros usuarios se les debe conceder uno de los siguientes Agente SQL Server roles fijos de base de datos en la msdb base de datos:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Para detalles sobre los permisos de estos roles, consulte Roles fijos de base de datos del Agente SQL Server.

Los miembros de SQLAgentUserRole y SQLAgentReaderRole solo pueden detener los trabajos que poseen. Los miembros de SQLAgentOperatorRole pueden detener todos los trabajos locales, incluidos los trabajos 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