Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Modificar um agendamento do SQL Server Agent (T-SQL)


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.