Abbiamo un po ' di storia di backup qui.

Abbiamo un po ‘ di storia di backup qui.

SQL Server tiene traccia della cronologia di ogni backup. Memorizza questi dati nel database MSDB. Questo è un database di sistema e, per impostazione predefinita, i nostri database di sistema vengono memorizzati sull’unità C se non diversamente specificato durante l’installazione.

Questo rappresenta un pericolo in alcuni modi diversi:

L’unità C potrebbe riempirsi, causando il fallimento delle scritture MSDB. L’unità di sistema si riempie più spesso di quanto si possa pensare, causata da utenti incuranti che scaricano file enormi sul desktop (che si trova sull’unità di sistema) o dagli aggiornamenti di Windows che scaricano molti file in una cartella temporanea sull’unità di sistema.

MSDB potrebbe crescere fino a riempire l’unità C, causando il fallimento di Windows. Nei casi in cui eseguiamo backup molto frequenti dei log delle transazioni di un gran numero di database e non eliminiamo mai MSDB, questo database può diventare abbastanza grande da minacciare le piccole unità C. Quando l’unità C si riempie, Windows fallisce duramente.

L’unità di sistema è spesso lenta. Nelle vecchie versioni di SQL Server, i database di sistema non erano indicizzati bene. Combina questo con unità locali lente e abbiamo una ricetta per l’accesso MSDB lento. In un caso, durante le nostre finestre di backup notturne, 2/3 del tempo è stato speso solo l’aggiornamento MSDB!

Gli strumenti di monitoraggio possono interrogare MSDB in modo inefficiente. Abbiamo visto casi in cui gli strumenti di monitoraggio dei server di terze parti controllavano costantemente MSDB per assicurarsi che tutti i database venissero sottoposti a backup, ma le loro query non utilizzavano indici. Queste query possono essere la cosa più lenta sul server.

Questa parte del nostro script sp_Blitz di SQL Server controlla se c’è una cronologia di backup MSDB più vecchia di 60 giorni. Questo di per sé non è un problema: potresti voler mantenere lunghi periodi di cronologia dei backup solo per fare report sul throughput delle prestazioni, ma considera di spostare quei dati su Excel o sul tuo strumento di report preferito piuttosto che colpire MSDB ogni volta.

Torna a sp_Blitz o Facci domande

Come pulire la cronologia dei backup MSDB sovraccaricata

Considera di eliminare la cronologia dei backup MSDB dei dati più vecchi di 60 giorni. Puoi farlo in un paio di modi diversi:

  • È possibile creare un piano di manutenzione che esegua regolarmente l’attività di pulizia cronologia.
  • È possibile creare un semplice processo di SQL Server Agent che esegue sp_delete_backuphistory su base regolare (è anche possibile eseguire sp_purge_jobhistory se si desidera abbinare la funzionalità del piano di manutenzione).

Espandere il Piano di Manutenzione nodo in sql server management studio, fare clic destro e scegliere “Nuovo Piano di Manutenzione…”

2015-04-10_14-20-46

Scegliere Attività di Manutenzione Pulitura dalla finestra casella degli strumenti (si noti che a volte questa finestra viene nascosta a sinistra in Esplora Oggetti in SSMS:

2015-04-10_14-21-26

Per finire, fare doppio clic sul compito, scegliere il tipo di pulizia che si desidera fare, e la quantità di dati che si desidera conservare. A volte creerò due attività, perché mi interessa meno la cronologia dei lavori dell’agente e la cronologia dei piani di manutenzione rispetto ai backup e di solito voglio che la cronologia dei backup corrisponda alla mia politica di conservazione dei dati.

2015-04-10_14-22-03

In entrambi i casi, se il tuo server ha una grande quantità di cronologia, questo passaggio richiederà molto tempo per essere eseguito la prima volta. Come notato da Brent nell’articolo sul collo di bottiglia MSDB, potrebbe essere necessario ricorrere a misure estreme come la modifica delle chiavi esterne del database di sistema solo per far sì che le eliminazioni avvengano.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.