SQL Server DBA Diaries
realizar backups de banco de dados é uma das tarefas mais frequentemente executadas por qualquer DBA. Na maioria das vezes, a janela de manutenção que a equipe do DBA obtém para realizar atividades de manutenção de banco de dados geralmente é menor. Mais frequentemente do que isso, as tarefas de manutenção do banco de dados são executadas além da janela estipulada e a equipe do Aplicativo começa a reclamar sobre isso.
mesmo em nosso ambiente, geralmente a equipe do aplicativo volta a afirmar ” nossos trabalhos críticos estão prestes a começar nos próximos minutos. Vemos que um processo de backup de banco de dados está utilizando a maioria dos recursos. Como isso pode afetar nossos empregos, você pode matá-lo?”
para eles, é o trabalho de backup que é executado todos os dias. Mas apenas o DBA saberia o quão precioso é um backup de banco de dados. Não me lembro quantas vezes esse backup extra me ajudou a sair de situações difíceis ou me deu confiança para seguir em frente com alguma proposta arriscada.
quando alguém pergunta por quanto tempo esse trabalho de backup será executado ou quanto trabalho ele já fez, a melhor opção no SQL Server 2000 foi verificar a saída fornecida pelo parâmetro stats no script de Backup. Mas se alguém esqueceu de incluir o parâmetro stats no script de backup, não há como verificar o status de conclusão do backup no SQL Server 2000.
mas iniciando o SQL Server 2005, esse comportamento mudou. Um dos muitos DMVs maravilhosos a serem incluídos no SQL Server 2005 é sys. dm_exec_requests. with este DMV o status, porcentagem concluída etc. do processo de Backup (para esse assunto qualquer comando SQL) pode ser facilmente rastreado. Aqui está o script que faz exatamente o mesmo.
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
eu sei que a maioria de nós já está usando alguma ou outra versão deste script há muito tempo. Como esse script recentemente ajudou David Rummel a rastrear o backup de um grande banco de dados, pensei que isso poderia ajudar outra pessoa em algum lugar.