sp_stop_job (Transact-SQL)
Indica al Agente SQL Server que detenga la ejecución de un trabajo.
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.
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.
