Artigo no estilo Mentoring Para tanto, os analistas de desenvolvimento e de testes precisam
de cópias atualizadas da base de produção para que possam simular a falha que
está ocorrendo ou adequar um novo recurso. Voltado para esse cenário, este
artigo apresenta orientações ao DBA que ensinam como construir um processo automático
no SQL Server que atualizará com a frequência desejada o banco de desenvolvimento
a partir do backup de produção.
O desenvolvimento de softwares cada vez mais sofisticados tem sido uma realidade crescente no mundo corporativo. O desenvolvimento, manutenção e atualização constante dos sistemas são indispensáveis.
Em qualquer que seja a área, para que todo projeto tenha o custo/benefício esperado, é preciso ter um planejamento muito bem documentado, contemplando os requisitos, os custos, as atividades que serão executadas, o cronograma e os resultados previstos.
Além disso, qualquer ocorrência fora do planejado precisa ser verificada e tratada com cuidado para que não haja um resultado final indesejado ou efeitos negativos que se prolonguem mesmo após a conclusão.
Toda aplicação, banco de dados, configuração de hardware, segurança, alta disponibilidade e recuperação em caso de falhas, por exemplo, precisam ser previstos no planejamento.
Qualquer indiferença em relação a pontos importantes como esses poderá causar bugs críticos, lentidão constante, vazamento de informações sigilosas da empresa, indisponibilidade e, consequentemente, perda de quantias consideráveis de dinheiro dependendo do negócio e importância da aplicação.
Para que o projeto de software traga um resultado extremamente satisfatório, o recomendado é que haja o desenvolvimento, testes, homologação e, por fim, a publicação do resultado final em produção.
Todos esses passos devem ser realizados em diferentes ambientes, cada um com seu propósito. Com isso, haverá confiabilidade no resultado alcançado, além de maior controle em caso de alterações.
Dentro desse processo e no que diz respeito a bancos de dados SQL Server, o ideal é que tenhamos servidores, instâncias e seus bancos de dados separados para cada finalidade. Ou seja, servidor para desenvolver e alterar/corrigir o banco de dados, servidor para testar e homologar o que foi desenvolvido ou alterado/corrigido e servidor para que o usuário final utilize através da aplicação.
Contudo, quando ocorre alguma falha e faz-se necessária a correção imediata no ambiente produtivo, é fundamental simular a mesma ocorrência no banco de desenvolvimento.
Para isso, o desenvolvedor geralmente solicita à equipe de DBAs uma cópia atualizada do banco de produção, o que poderá ser feito tranquilamente executando um backup com a cláusula with copy_only, que tem o propósito de não afetar a sequência de backups já agendada ao realizar um backup avulso, e restaurando-o na instância de desenvolvimento.
Porém, dependendo do tamanho do banco ou da urgência desse restore, essa atividade pode ser inconveniente no momento solicitado, até porque realizar um backup completo de um banco de tamanho grande não é recomendado em horário comercial.
Neste artigo, será proposta a construção de uma rotina automática que atualiza os bancos de dados de desenvolvimento e homologação com o backup mais recente de produção.
Utilizando o SQL Server Agent e algumas linhas de PowerShell, essa rotina poderá ser executada em horários mais convenientes sem afetar o desempenho dos ambientes envolvidos. Além disso, também poderá ser executada manualmente no momento que for preciso, mas de maneira mais prática e rápida.
Os ambientes envolvidos
Os ambientes mencionados na introdução são muito comuns em empresas que têm o foco em desenvolvimento de aplicações e que prezam pela qualidade e confiabilidade do resultado. Para esses casos, os ambientes citados são tidos como obrigatórios e geralmente são definidos como: de desenvolvimento, de homologação e de produção.
O ambiente de desenvolvimento é o local de trabalho do desenvolvedor. É onde ocorrerão a criação dos códigos da aplicação, a modelagem do banco de dados, rotinas específicas e tudo que será utilizado pelo usuário no futuro.
É comum ser chamado de dev ou desenv e é identificado pela a letra D em alguma posição do nome atribuído ao respectivo servidor (embora isso não seja uma regra).
Ademais, esse servidor normalmente tem uma configuração de hardware inferior aos de homologação e produção, e nele o desenvolvedor tem permissões quase totais ou totais para construir e alterar o que for necessário.
Vale lembrar que esse ambiente, seja para a aplicação ou para o banco de dados, tem uma importância considerável e sua indisponibilidade tende a causar transtornos no processo de desenvolvimento, visto que os analistas que o utilizam não poderão realizar seu trabalho, atrasando a resolução de problemas ou melhorias em produção. Portanto, a manutenção do servidor desenv também é obrigatória por parte do DBA e outros analistas de infraestrutura.
O ambiente de homologação será responsável
por realizar os testes e aprovações necessár ...