Clonagem de bancos de dados em SQL Server

por Roberto Cavalcanti

Existem situações em casos de suporte ao SQL Server em que nós precisamos capturar clones de bases de dados para tentarmos reproduzir determinados problemas in-house, sem afetar ambientes de produção e tendo a liberdade de testar os mais diversos cenários. Quando o servidor é o SQL Server 2000 nós costumamos usar a ferramenta “CloneDB” que permite que copiemos a estrutura da base de dados apenas, possibilitando assim a conformidade com as diversas políticas de privacidade que presentes no mundo corporativo.

Esses clones nos são úteis para inúmeros tipos de testes, mas são de extrema valia para a reprodução do comportamento do Query Optimizer do SQL Server durante a criação de um Plano de Execução (query plan).

Para tal, necessitamos capturar as seguintes informações sobre o SQL Server:

  • Metadata da base de dados a ser clonada
  • O ambiente de hardware
  • O session state da base de dados

A ferramenta CloneDB não é compatível com a versões 2005 e 2008 do SQL Server. Para conseguir o clone de uma base de dados no SQL Server 2005* ou SQL Server 2008, faça o seguinte:

  • Abra o SQL Server Management Studio.
  • No Object Explorer, expanda Databases e localize o banco de dados para o qual será gerado o clone.
  • Clique com o botão direito sobre o banco de dados, selecione Tasks e Generate Scripts. Clique em Next:

image

  • No Script Wizard, certifique-se de que o banco de dados correto está selecionado, marque a opção “Script all objects in the selected database” e clique em Next:

image

  • Em Choose Script Options, certifique-se de que as opções estão ajustadas como a seguir. Note que um aviso será exibido quando a opção Script statistics and histograms for selecionada, basta clicar em Ok. Clique em Next:

image

image

  • Selecione Script to file, escolha uma pasta e um nome apropriados e clique em Next:

image

  • Verifique se todas as opções estão corretas e clique em Finish. Aguarde o término da geração do clone e clique em Close:

image

Este roteiro está baseado nas instruções disponíveis no artigo:

How to generate a script of the necessary database metadata to create a statistics-only database in SQL Server 2005 and in SQL Server 2008

É importante notar que a geração do clone pode consumir bastante CPU, e por esse motivo recomendamos executar esse procedimento em um horário de baixa utilização da instância do SQL Server.

* O SQL Server 2005 tem que estar atualizado com pelo menos o Service Pack 2 para que esse procedimento funcione corretamente.