SQL Server DBA Diaries
Esecuzione di backup del database sono una delle attività più frequentemente eseguite da qualsiasi DBA. La maggior parte delle volte la finestra di manutenzione che il team DBA ottiene per eseguire attività di manutenzione del database è solitamente inferiore. Più spesso, le attività di manutenzione del database vengono eseguite oltre la finestra stabilita e il team dell’applicazione inizia a lamentarsi di questo.
Anche nel nostro ambiente, di solito il team dell’applicazione torna ad affermare ” I nostri lavori critici stanno per iniziare nei prossimi minuti. Vediamo che un processo di backup del database utilizza la maggior parte delle risorse. Dal momento che potrebbe influenzare il nostro lavoro, puoi per favore UCCIDERLO?”
Per loro è il lavoro di backup che viene eseguito tutti i giorni. Ma solo il DBA saprebbe quanto sia prezioso un backup del database. Non ricordo quante volte quel backup extra mi ha aiutato a uscire da situazioni difficili o mi ha dato la sicurezza di andare avanti con qualche proposta rischiosa.
Quando qualcuno chiede per quanto tempo verrà eseguito quel processo di backup o quanto lavoro ha già fatto, l’opzione migliore in SQL Server 2000 era controllare l’output dato dal parametro stats nello script di backup. Ma se qualcuno ha dimenticato di includere il parametro stats nello script di backup, non è possibile controllare lo stato di completamento del backup in SQL Server 2000.
Ma l’avvio di SQL Server 2005, questo comportamento è cambiato. Uno dei tanti meravigliosi DMV da includere in SQL Server 2005 è sys. dm_exec_requests. Con questo DMV lo stato,la percentuale completata ecc. del processo di backup (del resto qualsiasi comando SQL) può essere facilmente monitorato. Ecco lo script che fa esattamente lo stesso.
SELECT A.NAME,B.TOTAL_ELAPSED_TIME/60000 AS ,B.ESTIMATED_COMPLETION_TIME/60000 AS ,B.PERCENT_COMPLETE as ,(SELECT TEXT FROM sys.dm_exec_sql_text(B.SQL_HANDLE))AS COMMAND FROM MASTER..SYSDATABASES A, sys.dm_exec_requests BWHERE A.DBID=B.DATABASE_ID AND B.COMMAND LIKE '%BACKUP%' order by percent_complete desc,B.TOTAL_ELAPSED_TIME/60000 desc
So che molti di noi stanno già usando una o l’altra versione di questo script da molto tempo. Dal momento che questo script ha recentemente aiutato David Rummel per tenere traccia del backup di un database di grandi dimensioni, pensato che questo potrebbe aiutare qualcun altro da qualche parte.