sql >> Base de Datos >  >> RDS >> Sqlserver

Modificar una programación del Agente SQL Server (T-SQL)

Los programas del Agente SQL Server se pueden administrar independientemente de los trabajos. Esto significa que puede actualizar la programación directamente sin actualizar el trabajo en sí.

Puede hacer esto con el sp_update_schedule procedimiento almacenado.

Ejemplo

Crear el horario

Primero, creemos un horario:

EXEC sp_add_schedule 
    @schedule_name = N'Weekly_Sat_1AM',
    @freq_type = 8,
    @freq_interval = 64,
    @freq_recurrence_factor = 1,
    @active_start_time = 10000;

Ahora podemos usar sp_update_schedule para modificar ese horario.

Actualizar el Horario

Este es un ejemplo de cómo actualizar el cronograma que acabamos de crear.

EXEC sp_update_schedule 
    @name = N'Weekly_Sat_1AM',
    @new_name = N'Weekly_Sun_4AM',
    @freq_type = 8,
    @freq_interval = 1,
    @freq_recurrence_factor = 1,
    @active_start_time = 40000;

En este caso, cambié el nombre del horario, así como el intervalo de frecuencia y la hora de inicio.

Tenga en cuenta que sp_update_schedule cambia sólo aquellos ajustes para los que se proporcionan valores de parámetros. Si se omite un parámetro, se conserva la configuración actual.

Por lo tanto, dado que algunas de nuestras configuraciones permanecieron iguales (específicamente, @freq_type y @freq_recurrence_factor ), podríamos haber omitido esos parámetros por completo.

Así:

EXEC sp_update_schedule 
    @name = N'Weekly_Sat_1AM',
    @new_name = N'Weekly_Sun_4AM',
    @freq_interval = 1,
    @active_start_time = 40000;

Deshabilitar un horario

Puede configurar @enabled a 0 para deshabilitar un horario.

Ejemplo:

EXEC sp_update_schedule 
    @name = N'Weekly_Sun_4AM',
    @new_name = N'Weekly_Sun_4AM (DISABLED)',
    @enabled = 0;

En este ejemplo, también cambié el nombre para que parezca que el trabajo está deshabilitado.

Consulta el Horario

Puede usar sp_help_schedule para ver la configuración actual de un horario.

Puedes usarlo con o sin parámetros. Cuando se usa sin parámetros, devuelve todos los horarios.

EXEC sp_help_schedule;

Si solo desea ver los detalles de un horario, puede proporcionar el nombre o ID del horario.

Me gusta esto:

EXEC sp_help_schedule 
	@schedule_name = 'Weekly_Sun_4AM';

Aunque, al proporcionar el nombre, deberá recordar el apellido que le dio al horario. En nuestro caso, si ejecutamos este procedimiento después del ejemplo anterior (cuando deshabilitamos la programación), tendríamos que hacer esto:

EXEC sp_help_schedule 
	@schedule_name = 'Weekly_Sun_4AM (DISABLED)';

Sin embargo, la ID del programa permanece constante, por lo que puede usarla independientemente del nombre del programa.

Ejemplo:

EXEC sp_help_schedule 
	@schedule_id = 16;

Al usar la ID, puede omitir el nombre del parámetro si lo desea.

Ejemplo:

EXEC sp_help_schedule 16;

¿Qué sucede con los trabajos que usan el horario modificado?

Todos los trabajos que utilizan la programación utilizan inmediatamente la nueva configuración. Sin embargo, cambiar un horario no detiene los trabajos que se están ejecutando actualmente.

Sintaxis completa

La sintaxis completa de sp_update_schedule va así:

sp_update_schedule   
    {   [ @schedule_id = ] schedule_id   
      | [ @name = ] 'schedule_name' }  
    [ , [ @new_name = ] new_name ]  
    [ , [ @enabled = ] enabled ]  
    [ , [ @freq_type = ] freq_type ]  
    [ , [ @freq_interval = ] freq_interval ]   
    [ , [ @freq_subday_type = ] freq_subday_type ]   
    [ , [ @freq_subday_interval = ] freq_subday_interval ]   
    [ , [ @freq_relative_interval = ] freq_relative_interval ]   
    [ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]   
    [ , [ @active_start_date = ] active_start_date ]   
    [ , [ @active_end_date = ] active_end_date ]   
    [ , [ @active_start_time = ] active_start_time ]   
    [ , [ @active_end_time = ] active_end_time ]   
    [ , [ @owner_login_name = ] 'owner_login_name' ]  
    [ , [ @automatic_post =] automatic_post ]

Consulte la documentación de Microsoft para sp_update_schedule para una explicación de cada parámetro, así como los valores que acepta cada uno.