Eu tenho que enviar tickets para alterar o agendamento de tarefas, então, em vez de percorrer a GUI, tento atualizar msdb..sysschedules via script tsql. Eu sempre vejo as alterações imediatamente através da GUI. A primeira vez que usei esse método, porém, levou um dia para que as alterações se propagassem. Mais recentemente tem sido mais longo. Suspeito que algo esteja armazenado em cache no agente/agendador, mas não consigo encontrar documentação sobre o que fazer para liberar isso da maneira menos intrusiva em um sistema de produção. Eu esperava que algo rudimentar como desabilitar/habilitar o trabalho acionasse uma atualização, mas não fez nada e prefiro emitir algo no T-SQL com meus tickets para garantir que as alterações sejam usadas. Eu solicitei uma reinicialização do agente quando nada estiver no horizonte para ver se isso funciona, mas o ideal seria algo menos intrusivo. Esta é uma instância de 2014.
Um script de exemplo:
USE msdb;
update s set
s.freq_subday_interval=3
from msdb..sysjobs j
left join msdb..sysjobschedules js on j.job_id = js.job_id
left join msdb..sysschedules s on js.schedule_id = s.schedule_id
where j.name ='SomeDb.RunMeEvery3MinsBusta';
----editar-----
Eu acho que tirando as respostas desde que testei abaixo e parece uma cascata imediatamente. Só queria torná-lo um pouco mais dinâmico.
declare @jobid nvarchar(50), @scheduleid int
select @jobid=j.job_id,@scheduleid=s.schedule_id from msdb..sysjobs j
left join msdb..sysjobschedules js on j.job_id = js.job_id
left join msdb..sysschedules s on js.schedule_id = s.schedule_id
where j.name ='test';
EXEC msdb.dbo.sp_attach_schedule @job_id=@jobid,@schedule_id=@scheduleid
EXEC msdb.dbo.sp_update_schedule @schedule_id=@scheduleid,
@freq_subday_interval=1
GO
Você pode usar o script abaixo para alterar a programação:
você pode encontrar job_id usando o script abaixo para o trabalho que deseja alterar o agendamento:
Para encontrar schedule_id, use o script abaixo:
Aqui
job_id
é retirado do script anterior da tabelasysjobs
.Eu especifiquei este trabalho para ser executado às 2h45 diariamente, você também pode especificar outras opções.
O script acima é alterar o tipo de trabalho para semanal, executado às 15h30 aos sábados.
Esperança acima ajuda.
Implicado pela resposta de Learning_DBAdmin, o que você faz não é suportado. Modificando as tabelas do sistema diretamente, ou seja. Você deve usar a interface que nos é fornecida, os procedimentos armazenados do agente.
FWIW, se você ler o código-fonte, por exemplo sp_update_jobschedule, encontrará uma chamada para sp_sqlagent_notify. Isso não está documentado, no entanto, pelo motivo acima.