Estou procurando uma maneira fácil de atualizar os trabalhos criados a partir do script MaintenanceSolution.sql de Ola sem precisar excluí-los e recriá-los completamente ou modificar cada trabalho individualmente acessando as propriedades do trabalho, depois na etapa e modificando o comando.
Especificamente, estou tentando atualizar o @CleanupTime
argumento, que é usado para informar ao trabalho quando excluir backups antigos. De acordo com seu FAQ , sempre que uma versão mais recente de seu script estiver disponível e você quiser atualizar para essa versão mais recente, basta fazer o download do script MaintenanceSolution.sql e executá-lo novamente, com a opção de especificar SET @CreateJobs = 'N'
caso não o faça. deseja criar os empregos. Isso me diz que se você sair @CreateJobs = 'Y'
, isso criaria novos empregos, mas não parece ser o caso.
Por exemplo, se o trabalho "DatabaseBackup - USER_DATABASES - FULL" já existir, com o comando na etapa mostrando @CleanupTime = 48
, então eu executo novamente o script MaintenanceSolution.sql com @CleanupTime = 168
, e então volto para a etapa do trabalho, ele ainda mostra @CleanupTime = 48
.
Você pode atualizar as etapas sem recriar tudo completamente e sem apontar e clicar até morrer na interface do usuário. Você pode apenas escrever consultas manuais diretamente em msdb.dbo.sysjobsteps (comece com SELECTs que emitem as chamadas REPLACE() e, quando estiver satisfeito, altere para UPDATE).
Quando você estiver satisfeito, está correto, apenas as primeiras linhas mudam:
É difícil ficar mais automatizado do que isso (por exemplo, atualizar mais de um trabalho de uma vez), pois a string que você deseja substituir pode não ser exatamente a mesma em todas as etapas do trabalho e você também pode obter falsos positivos.