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

sp_add_schedule vs sp_add_jobschedule en SQL Server:¿Cuál es la diferencia?

Si está en el proceso de crear un trabajo del Agente SQL Server con T-SQL, es posible que se pregunte si debe crear su programación con sp_add_schedule procedimiento almacenado o el sp_add_jobschedule procedimiento.

Aquí hay una explicación rápida de la diferencia entre estos dos procedimientos.

La diferencia

  • El sp_add_schedule El procedimiento crea un programa, pero no lo adjunta a ningún trabajo. Para hacer eso, necesita usar el sp_attach_schedule procedimiento.
  • El sp_add_jobschedule El procedimiento crea el programa y lo adjunta a un trabajo determinado, todo de una sola vez.

Por lo tanto, sp_add_jobschedule está bien si necesita crear una nueva programación para un trabajo específico y ese trabajo ya existe. Si está creando un cronograma para varios trabajos y ninguno de ellos existe todavía, puede usar sp_add_schedule . Entonces puedes usar sp_attach_schedule para adjuntarlo a sus trabajos más tarde.

Pero eso no quiere decir que no puedas usar sp_add_schedule en lugar de sp_add_jobschedule si el trabajo ya existe.

Usando sp_add_schedule (junto con sp_attach_schedule ) le permite separar el proceso de creación de horarios y adjuntarlos a los trabajos. Todavía puede usar este combo incluso cuando crea un solo trabajo con un solo horario.

En otras palabras, puede usar sp_add_schedule en lugar de sp_add_jobschedule para todos sus trabajos del Agente SQL Server.

Ejemplo

El sp_add_jobschedule Procedimiento

El sp_add_jobschedule El procedimiento crea una programación para un trabajo del Agente SQL Server determinado. Cuando llame a este procedimiento, debe proporcionar el nombre o la identificación de un trabajo al que desea aplicar.

Básicamente, este procedimiento crea un cronograma y lo adjunta a un solo trabajo.

Aquí hay un ejemplo de cómo crear un trabajo y usar sp_add_jobschedule procedimiento almacenado:

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;

Cuando miras el sp_add_jobschedule procedimiento, el @job_name argumento proporciona el nombre del trabajo. El @name argumento proporciona el nombre que desea dar a la programación.

El sp_add_schedule Procedimiento

El sp_add_schedule El procedimiento le permite crear un programa sin tener que especificar un trabajo para adjuntarlo.

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.

He aquí un ejemplo:

EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
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).

Adjuntar un sp_add_jobschedule Horario

Es importante tener en cuenta que sp_attach_schedule puede adjuntar horarios que se crearon con ambos sp_add_schedule y con sp_add_jobschedule .

En otras palabras, crear un horario con sp_add_jobschedule no lo restringe solo al trabajo que especificó al crear el programa. todavía está disponible para adjuntarse a otros trabajos más tarde usando sp_attach_schedule .