Os agendamentos do SQL Server Agent podem ser gerenciados independentemente dos trabalhos. Isso significa que você pode atualizar o agendamento diretamente sem atualizar o trabalho em si.
Você pode fazer isso com o
sp_update_schedule
procedimento armazenado. Exemplo
Criar a programação
Primeiro, vamos criar um cronograma:
EXEC sp_add_schedule
@schedule_name = N'Weekly_Sat_1AM',
@freq_type = 8,
@freq_interval = 64,
@freq_recurrence_factor = 1,
@active_start_time = 10000;
Agora podemos usar
sp_update_schedule
para modificar esse cronograma. Atualizar a programação
Aqui está um exemplo de atualização do cronograma que acabamos de criar.
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;
Nesse caso, alterei o nome do agendamento, bem como o intervalo de frequência e o horário de início.
Observe que
sp_update_schedule
altera apenas as configurações para as quais os valores de parâmetro são fornecidos. Se um parâmetro for omitido, a configuração atual será mantida. Portanto, como algumas de nossas configurações permaneceram as mesmas (especificamente,
@freq_type
e @freq_recurrence_factor
), poderíamos ter omitido esses parâmetros completamente. Assim:
EXEC sp_update_schedule
@name = N'Weekly_Sat_1AM',
@new_name = N'Weekly_Sun_4AM',
@freq_interval = 1,
@active_start_time = 40000;
Desativar uma programação
Você pode definir
@enabled
para 0
para desabilitar um agendamento. Exemplo:
EXEC sp_update_schedule
@name = N'Weekly_Sun_4AM',
@new_name = N'Weekly_Sun_4AM (DISABLED)',
@enabled = 0;
Neste exemplo, também alterei o nome para tornar aparente que o trabalho está desabilitado.
Verifique a programação
Você pode usar
sp_help_schedule
para visualizar as configurações atuais de um agendamento. Você pode usá-lo com ou sem parâmetros. Quando usado sem parâmetros, retorna todos os agendamentos.
EXEC sp_help_schedule;
Se você quiser ver apenas os detalhes de um agendamento, forneça o nome ou o ID do agendamento.
Assim:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM';
Embora, ao fornecer o nome, você precise lembrar o sobrenome que deu ao agendamento. No nosso caso, se executarmos este procedimento após o exemplo anterior (quando desabilitamos o agendamento), precisaríamos fazer isso:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM (DISABLED)';
No entanto, o ID do agendamento permanece constante, portanto, você pode usá-lo independentemente do nome do agendamento.
Exemplo:
EXEC sp_help_schedule
@schedule_id = 16;
Ao usar o ID, você pode omitir o nome do parâmetro, se desejar.
Exemplo:
EXEC sp_help_schedule 16;
O que acontece com os trabalhos que usam a programação modificada?
Todos os trabalhos que usam o agendamento usam imediatamente as novas configurações. No entanto, alterar um agendamento não interrompe os trabalhos que estão em execução no momento.
Sintaxe Completa
A sintaxe completa de
sp_update_schedule
fica assim: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 a documentação da Microsoft para
sp_update_schedule
para uma explicação de cada parâmetro, bem como os valores que cada um aceita.