Se SQL Server Agent funziona correttamente, ma avete comunque problemi a schedulare delle operazioni di backup sui database, è possibile che a causa di un problema (normalmente di mancanza spazio) il database di sistema msdb si sia corroto e per questo motivo le vostre operazioni pianificate vanno in crush.
Come recita msdn, l’msdb database è usato sia da SQL Agent per schedulare alert e jobs che da altri servizi come Service Broker e Database Mail; dato che si tratta di un database di sistema, non potete eseguire su di esso normali operazioni quali attach e detach, ma per operare su questo db dovete seguire una procedura differente.
- Come primo passo fate lo shutdown di SQL
- aprite un prompt dei comandi e portatevi nella directory Binn di SQL (C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Binn per le versioni in italiano)
- lanciate dal prompt SQL in modalita MASTER
sqlservr.exe -c -T3608 -s <nomeistanza> - aprite una console di Management di SQL e fate il detach del db
sp_detach_db ‘msdb’ - uscite dalla console, andate nella cartella C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data (per le versioni italiane) e rinominate i file del database msdb; sia il fine di dati .mdf e il log .ldf
- dal prompt dei comandi portatevi in C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Install e lanciate lo script di ricostruzione
osql -E -S <nomeserver>\<nomeistanza> -i instmsdb.sql - riavviate il servizio in modalità normale
In questo modo potete ripristinare il database, ma perderete tutti i dati in esso contenuti come ad esempio i piani di manutenzione e backup.
Per evitare di dover essere costretti a ricorrere a procedure di questo tipo consiglio sempre di eseguire i backup anche dei database di sistema.