Compartir a través de


sp_update_jobstep (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Cambia la configuración de un paso de un trabajo que se usa para realizar actividades automatizadas en el servicio Agente SQL Server.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_update_jobstep
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    , [ @step_id = ] step_id
    [ , [ @step_name = ] N'step_name' ]
    [ , [ @subsystem = ] N'subsystem' ]
    [ , [ @command = ] N'command' ]
    [ , [ @additional_parameters = ] N'additional_parameters' ]
    [ , [ @cmdexec_success_code = ] cmdexec_success_code ]
    [ , [ @on_success_action = ] on_success_action ]
    [ , [ @on_success_step_id = ] on_success_step_id ]
    [ , [ @on_fail_action = ] on_fail_action ]
    [ , [ @on_fail_step_id = ] on_fail_step_id ]
    [ , [ @server = ] N'server' ]
    [ , [ @database_name = ] N'database_name' ]
    [ , [ @database_user_name = ] N'database_user_name' ]
    [ , [ @retry_attempts = ] retry_attempts ]
    [ , [ @retry_interval = ] retry_interval ]
    [ , [ @os_run_priority = ] os_run_priority ]
    [ , [ @output_file_name = ] N'output_file_name' ]
    [ , [ @flags = ] flags ]
    [ , [ @proxy_id = ] proxy_id ]
    [ , [ @proxy_name = ] N'proxy_name' ]
[ ; ]

Argumentos

[ @job_id = ] 'job_id'

Número de identificación del trabajo al que perteneces el paso. @job_id es uniqueidentifier, con un valor predeterminado de NULL.

Se deben especificar @job_id o @job_name , pero no se pueden especificar ambos.

[ @job_name = ] N'job_name'

El nombre del trabajo al que pertenece el paso. @job_name es sysname, con un valor predeterminado de NULL.

Se deben especificar @job_id o @job_name , pero no se pueden especificar ambos.

[ @step_id = ] step_id

Número de identificación del paso de trabajo que va a modificarse. @step_id es int, sin valor predeterminado. Este número no se puede cambiar.

[ @step_name = ] N'step_name'

Nuevo nombre para el paso. @step_name es sysname, con un valor predeterminado de NULL.

[ @subsystem = ] N'subsystem'

Subsistema usado por Agente SQL Server para ejecutar @command. @subsystem es nvarchar(40), con un valor predeterminado de NULL.

[ @command = ] N'command'

Los comandos que se van a ejecutar a través de @subsystem. @command es nvarchar(max), con un valor predeterminado de NULL.

[ @additional_parameters = ] N'additional_parameters'

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

[ @cmdexec_success_code = ] cmdexec_success_code

Valor devuelto por un comando del subsistema CmdExec para indicar que el comando se ejecutó correctamente. @cmdexec_success_code es int, con un valor predeterminado de NULL.

[ @on_success_action = ] on_success_action

Acción que se realiza si el paso termina correctamente. @on_success_action es tinyint, con un valor predeterminado de NULLy puede ser uno de estos valores.

Valor Descripción (acción)
1 Salir con éxito
2 Salir con error
3 Ir al paso siguiente
4 Vaya al paso @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

Número de identificación del paso de este trabajo que se va a ejecutar si el paso se realiza correctamente y @on_success_action es 4. @on_success_step_id es int, con un valor predeterminado de NULL.

[ @on_fail_action = ] on_fail_action

Acción que se va a realizar si se produce un error en el paso. @on_fail_action es tinyint y puede tener uno de estos valores.

Valor Descripción (acción)
1 Salir con éxito
2 Salir con error
3 Ir al paso siguiente
4 Vaya al paso @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

Número de identificación del paso de este trabajo que se va a ejecutar si se produce un error en el paso y @on_fail_action es 4. @on_fail_step_id es int, con un valor predeterminado de NULL.

[ @server = ] N'server'

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

[ @database_name = ] N'database_name'

Nombre de la base de datos en la que se va a ejecutar un paso de Transact-SQL. @database_name es sysname, con un valor predeterminado de NULL. No se permiten nombres entre corchetes ([]).

[ @database_user_name = ] N'database_user_name'

Nombre del usuario de la base de datos que se va a usar al ejecutar un paso de Transact-SQL. @database_user_name es sysname, con un valor predeterminado de NULL.

[ @retry_attempts = ] retry_attempts

Número de reintentos en caso de que el paso dé error. @retry_attempts es int, con un valor predeterminado de NULL.

[ @retry_interval = ] retry_interval

Tiempo en minutos entre reintentos. @retry_interval es int, con un valor predeterminado de NULL.

[ @os_run_priority = ] os_run_priority

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

[ @output_file_name = ] N'output_file_name'

Nombre del archivo en el que se guarda el resultado de este paso. @output_file_name es nvarchar(200), con un valor predeterminado de NULL. Este parámetro solo es válido con comandos que se ejecutan en subsistemas Transact-SQL o CmdExec .

Para volver a establecer @output_file_name en NULL, debe establecer @output_file_name en una cadena vacía o en una cadena de caracteres en blanco, pero no puede usar la CHAR(32) función .

Por ejemplo, establezca este argumento en una cadena vacía del modo siguiente:

@output_file_name = ' '

[ @flags = ] marcas

Una opción que controla el comportamiento. @flags es int, con un valor predeterminado de NULL.

Valor Descripción
0 (valor predeterminado) Sobrescribir el archivo de salida
2 Anexar al archivo de salida
4 Escribir la salida del paso de trabajo Transact-SQL en el historial de pasos
8 Escribir el registro en la tabla (sobrescribir el historial existente)
16 Escribir el registro en la tabla (anexar al historial existente)

[ @proxy_id = ] proxy_id

Número de identificación del proxy con el que se ejecuta el paso de trabajo. @proxy_id es int, con un valor predeterminado de NULL. Si no se especifica ningún @proxy_id, no se especifica ningún @proxy_name y no se especifica ningún @database_user_name, el paso de trabajo se ejecuta como la cuenta de servicio de Agente SQL Server.

[ @proxy_name = ] N'proxy_name'

Nombre del proxy con el que se ejecuta el paso de trabajo. @proxy_name es sysname, con un valor predeterminado de NULL. Si no se especifica ningún @proxy_id, no se especifica ningún @proxy_name y no se especifica ningún @database_user_name, el paso de trabajo se ejecuta como la cuenta de servicio de Agente SQL Server.

Valores de código de retorno

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

Comentarios

sp_update_jobstep debe ejecutarse desde la msdb base de datos.

La actualización de un paso de trabajo incrementa el número de la versión del trabajo.

Este procedimiento almacenado comparte el nombre de sp_update_jobstep 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_update_jobstep (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.

Solo los miembros de sysadmin pueden actualizar un paso de trabajo de un trabajo propiedad de otro usuario.

Si el paso de trabajo requiere acceso a un proxy, el creador del paso de trabajo debe tener acceso al proxy del paso de trabajo. Todos los subsistemas, excepto Transact-SQL, necesitan una cuenta de proxy. Los miembros de sysadmin tienen acceso a todos los servidores proxy y pueden usar la cuenta de servicio Agente SQL Server para el proxy.

Ejemplos

En el siguiente ejemplo se modifica el número de reintentos para el primer paso del trabajo Weekly Sales Data Backup. Después de ejecutar este ejemplo, el número de reintentos es 10.

USE msdb;
GO

EXEC dbo.sp_update_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_id = 1,
    @retry_attempts = 10;
GO