Se você está no processo de criação de um trabalho do SQL Server Agent com T-SQL, pode estar se perguntando se deve criar seu agendamento com o
sp_add_schedule
procedimento armazenado ou o sp_add_jobschedule
procedimento. Aqui está uma explicação rápida da diferença entre esses dois procedimentos.
A diferença
- O
sp_add_schedule
procedimento cria um agendamento, mas não o anexa a nenhum trabalho. Para fazer isso, você precisa usar osp_attach_schedule
procedimento. - O
sp_add_jobschedule
procedimento cria o cronograma e o anexa a um determinado trabalho, tudo de uma vez.
Portanto,
sp_add_jobschedule
pode ser usado se você precisar criar um novo agendamento para um trabalho específico e esse trabalho já existir. Se você estiver criando uma programação para vários trabalhos e nenhum deles existir ainda, use sp_add_schedule
. Então você pode usar sp_attach_schedule
para anexá-lo aos seus trabalhos mais tarde. Mas isso não quer dizer que você não pode usar
sp_add_schedule
em vez de sp_add_jobschedule
se o trabalho já existir. Usando
sp_add_schedule
(em conjunto com sp_attach_schedule
) permite separar o processo de criação de agendamentos e anexá-los aos trabalhos. Você ainda pode usar esse combo mesmo ao criar um único trabalho com um único agendamento. Em outras palavras, você pode usar
sp_add_schedule
em vez de sp_add_jobschedule
para todos os seus trabalhos do SQL Server Agent. Exemplo
O sp_add_jobschedule
Procedimento
O
sp_add_jobschedule
procedimento cria um agendamento para um determinado trabalho do SQL Server Agent. Ao chamar esse procedimento, você deve fornecer o nome ou ID de um trabalho ao qual deseja se candidatar. Basicamente, esse procedimento cria um cronograma e o anexa a um único trabalho.
Aqui está um exemplo de como criar um trabalho e usar o
sp_add_jobschedule
procedimento armazenado: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;
Quando você olha para o
sp_add_jobschedule
procedimento, o @job_name
argumento fornece o nome do trabalho. O @name
argumento fornece o nome que você deseja dar ao agendamento. O sp_add_schedule
Procedimento
O
sp_add_schedule
procedimento permite que você crie um agendamento sem precisar especificar um trabalho ao qual anexá-lo. Esse procedimento cria o agendamento, mas não o anexa a nenhum trabalho. Para anexá-lo a um trabalho, você deve usar o
sp_attach_schedule
procedimento. Aqui está um exemplo:
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
Quando você usa
sp_attach_schedule
, você deve fornecer o nome do trabalho ou seu ID (mas não ambos), bem como o nome ou ID do agendamento (mas não ambos). Anexando um sp_add_jobschedule
Agenda
É importante observar que
sp_attach_schedule
pode anexar agendas que foram criadas com sp_add_schedule
e com sp_add_jobschedule
. Em outras palavras, criar uma agenda com
sp_add_jobschedule
não o restringe apenas ao trabalho que você especificou ao criar o agendamento. ele ainda está disponível para ser anexado a outros trabalhos posteriormente usando sp_attach_schedule
.