Se vi fosse mai capitato di scrivere dei Maintenance Plans su sql server, saprete che insieme ad essi viene creato anche un job con tanto di eventuale schedulazione.
Per chi non conoscesse la funzionalità, provate a controllare sul vostro sql server (a partire dalla Workgroup edition) via Management studio alla cartella Management direttamente sul server:
da quella cartella è possibile (tasto destro, new maintenance plan.. Inserire nome) creare il vostro piano di manutenzione, tramite un'interfaccia simile a quella fornita da VS BIDS per gli Integration Services.
La toolbox, a differenza di quella fornita su BIDS, è ridotta ai soli task per la manutenzione del server:
Sopra al workflow disegnato, troviamo un'area in cui definire la schedulazione, proprio come succede per un qualunque altro job creato tramite SQL Server Agent.
Creandone una e salvando il piano di manutenzione, verrà creato un job automaticamente nel nodo relativo all'agent:
Il nome è definito da <Nome Maintenance Plan>.<Nome Schedulazione>.
Con questo post voglio farvi notare che, siccome vi è un legame automatico tra un job ed un Piano di manutenzione, bisogna fare attenzione in caso di modifica di quest'ultimo.
Perchè faccio presente questo?
Perchè il salvataggio di un piano di manutenzione porta una completa drop/create del job.
Quindi, RICORDATEVI di non personalizzare il job, ad esempio aggiungendo un task, perchè dopo un nuovo salvataggio il job relativo al piano viene ricreato.
Questo giusto perchè può succedere che, a fianco di uno step automaticamente generato, potrebbe essere comodo lanciare altri job, o ancora aggiungere uno step che lancia una stored procedure, ecc..
Una pratica corretta potrebbe essere inserire la modifica direttamente nel flow del maintenance plan, anche se non è detto che le operazioni debbano essere legate.
In questo ultimo caso, è preferibile schedulare diversamente due job, che effettuano le operazioni di manutenzione in tempi diversi, senza vincoli di precedenza..
Stay Tuned!