Quando fazemos migração de versão ou um update no Team Foundation Server é comum momentos antes executarmos um backup full da base de dados, porém quando temos uma base muito grande o tempo do backup acaba ultrapassando 30 minutos e a ferramenta do TFS corta o feedback visual e te dá uma outra maneira de acompanhar o processo. Porém ela não é muito amigável. Mas felizmente desde a versão 2005 do MS SQL Server temos uma feature chamada Dynamic Management Views (DMV), e com ela temos uma outra maneira de acompanhar o backup.
Backup no TFS
Configuração
Sempre é bom lembrar que para realizar o backup no TFS é recomendável o uso da ferramenta no Administration Console (1). É possível criar facilmente uma rotina de Schedule Backup (2), que atende, senão todos, a maioria dos cenários. Siga a documentação para maiores detalhes. A ferramenta executa procedimentos que se não forem feitos pode invalidar o backup e não será possível fazer restore.
É altamente recomendável executar testes de disaster recovery regularmente, garantindo assim a restauração do ambiente em caso de falha
Bases adicionais
Normalmente o TFS acaba tendo um servidor de banco de dados exclusivo. E outras ferramentas de ALM podem utilizar esse servidor, como um serviço de Nuget privado ou mesmo o Release Management. Não se esqueça de adicionar essas bases ao seu processo de backup. Você pode incluí-las neste procedimento.
Backup Full
Mesmo com os backups agendados, antes do upgrade ou update, tirar um backup full garante que foi armazenado com segurança as últimas transações executadas no TFS.
O Backup Full é executado baseado nas configurações do Scheduled Backup, portanto é necessário configurá-lo e adicionar Reporting Services ou bases do Sharepoint
Execução
Após clicar no link ele irá preparar o backup e executar em seguida.
Passando os 30 minutos a janela irá fechar e será recomendados acompanhar o job através da tela de monitoramento. Porém, como ela não é tão amigável vamos usar uma instrução Dynamic Management Views (DMV) para dar um feedback melhor, através do SQL Management Studio.
Conecte-se no servidor do MS SQL Server através da ferramenta e abra uma janela para executar uma query, copie, cole e clique em Execute.
SELECT session_id as SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')
No destaque da imagem acima é possível ver a hora de início e de fim do backup, e principalmente o percentual executado, dando uma noção de quanto tempo irá levar a tarefa.
(Cross-post de http://egomesbrandao.com.br/2016/05/23/monitorando-um-backup-full-na-base-de-dados-team-foudation-server/)
Emmanuel Brandão