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

Cree una programación del Agente SQL Server con T-SQL

Al usar T-SQL, puede usar el sp_add_schedule procedimiento almacenado para agregar una programación del Agente SQL Server.

Este procedimiento crea el cronograma, pero no lo adjunta a ningún trabajo. Para adjuntarlo a un trabajo, debe usar el sp_attach_schedule procedimiento.

También puede usar sp_add_jobschedule para crear el horario y adjuntarlo todo con el mismo procedimiento.

Ejemplo del sp_add_schedule Procedimiento

Aquí hay un ejemplo que usa sp_add_schedule para crear un nuevo horario:

EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO

Este procedimiento almacenado acepta más argumentos de los que he incluido en este ejemplo, pero estos son algunos de los más comunes. Consulte las tablas a continuación para obtener un resumen de los valores aceptados.

@schedule_name es un argumento obligatorio, pero los demás son opcionales y tienen configuraciones predeterminadas en caso de que no las proporcione.

Ahora podemos usar sp_attach_schedule para adjuntar ese horario a un trabajo existente:


EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO

Cuando usa sp_attach_schedule , debe proporcionar el nombre del trabajo o su Id. (pero no ambos), así como el nombre o Id. del programa (pero no ambos).

Ejemplo del sp_add_jobschedule Procedimiento

Aquí hay un ejemplo que usa sp_add_jobschedule para crear un nuevo horario y adjuntarlo a un trabajo, todo de una sola vez:

EXEC sp_add_jobschedule 
    @job_name = N'BackupMusicDB',
    @name = N'Weekly_Sun_3AM',
    @freq_type = 8,
    @freq_interval = 1,
    @freq_recurrence_factor = 1,
    @active_start_time = 30000;

Con este procedimiento el @job_name El argumento proporciona el nombre del trabajo y el @name argumento proporciona el nombre que desea dar a la programación.

Valores de parámetros

La forma en que los datos de programación se almacenan en msdb La base de datos hace que sea un poco complicado cuando se trata de programar trabajos con T-SQL.

Los valores de fecha/hora se almacenan como int tipos El tipo de frecuencia se expresa como un int , al igual que los valores de intervalo y varias otras opciones.

A continuación se muestra una descripción general de los valores aceptados para los parámetros proporcionados en los ejemplos anteriores.

@freq_type

Este argumento especifica cuándo se debe ejecutar un trabajo. Acepta los siguientes valores:

Valor Descripción
1 Una vez
4 Diario
8 Semanal
16 Mensual
32 Mensual, relativo a freq_interval
64 Ejecutar cuando se inicie el servicio del Agente SQL
128 Ejecutar cuando la computadora está inactiva

@freq_interval

Este argumento especifica los días en que se ejecuta un trabajo.

Este argumento depende del valor de @freq_type argumento, como se describe en la siguiente tabla:

Valor de freq_type Efecto en freq_interval
1 (una vez) freq_interval no se usa.
4 (diariamente) Cada freq_interval días.
8 (semanal) freq_interval es uno o más de los siguientes (combinado con un OR operador lógico):

1 (Domingo)

2 (Lunes)

4 (Martes)

8 (Miércoles)

16 (Jueves)

32 (Viernes)

64 (sábado)
16 (mensual) En el freq_interval día del mes.
32 (pariente mensual) freq_interval es uno de los siguientes:

1 (Domingo)

2 (Lunes)

3 (Martes)

4 (Miércoles)

5 (Jueves)

6 (Viernes)

7 (Sábado)

8 (Día)

9 (Día laborable)

10 (día de fin de semana)
64 (cuando se inicia el servicio SQLServerAgent) freq_interval no se usa.
128 freq_interval no se usa.

@freq_recurrence_factor

Esto especifica el número de semanas o meses entre la ejecución programada de un trabajo.

Esto es int , con un valor predeterminado de 0 , y se usa solo si freq_type es 8 , 16 , o 32 .

@active_start_time

Especifica la hora de cualquier día entre @active_start_date y el @active_end_date argumentos para comenzar la ejecución de un trabajo. @active_start_time es int , con un valor predeterminado de 000000 , que indica las 12:00:00 a.m. en un reloj de 24 horas, y debe ingresarse mediante el formulario HHMMSS.

@active_start_date

Aunque no está incluido en mis ejemplos anteriores, @active_start_date El argumento le permite especificar la fecha en la que puede comenzar la ejecución de un trabajo. Esto es int , con un valor predeterminado NULL, que indica la fecha de hoy. La fecha tiene el formato AAAAMMDD.

@active_end_date

También puede proporcionar un @active_end_date argumento, que especifica la fecha en la que se puede detener la ejecución de un trabajo.

@active_end_date es int , con un valor predeterminado de 99991231 , que indica el 31 de diciembre de 9999. La fecha tiene el formato AAAAMMDD.

Más información

Consulte la documentación de Microsoft para sp_add_schedule y/o documentación de Microsoft para sp_add_jobschedule para obtener más detalles sobre los distintos argumentos y sus valores aceptados.