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.
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
, RESTORE
y 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
Este procedimiento almacenado es propiedad del rol db_owner . Puede conceder EXECUTE
permisos para cualquier usuario, 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