Um jeito simples de clonar a estrutura do seu banco de dados

DBA e Consultor de Banco de Dados

Um jeito simples de clonar a estrutura do seu banco de dados

Tempo de leitura: 3 minutos

Olá pessoal,

Espero que estejam todos bem 😊

Simm!! Depois de um longo tempo sem postar, estamos de volta!!

Tentarei ser mais frequente nas postagens, muitas mudanças ocorreram no lado pessoal e isso acabou mudando um pouco o foco das minhas prioridades, mas, falaremos mais sobre essas mudanças na vida pessoal em um outro momento.

O assunto de hoje é para mostrar uma funcionalidade muito interessante do SQL Server.

Recentemente, peguei um caso aqui na Power Tuning de corrupção de dados. Esse assunto é sempre delicado e polêmico, não é mesmo?

Pois bem, nesse caso nem o famoso DBCC CHECKDB com o polêmico parâmetro REPAIR_ALLOW_DATA_LOSS estava adiantando.. eita!!!

Então, junto ao consentimento do cliente, mapeamos um plano de ação para tentar contornar o problema.

As ações macro do nosso plano de ação foram :

  • Gerar uma nova estrutura vazia da base corrompida;
  • Gerar os scripts para desabilitar/habilitar todas as Constraints e Triggers na nova estrutura;
  • Desabilitar todas as Constraints e Triggers na nova estrutura;
  • Inserir os dados da base corrompida nesta nova estrutura;
  • Habilitar todas as Constraints e Triggers na nova estrutura;
  • Testar/validar o sistema com o novo banco populado;

Não entrarei a fundo em todas as etapas realizadas no cliente, pois isso deixaria o nosso artigo gigantesco, ok?

Falarei apenas da função que descobri junto ao meu amigo Eduardo Roedel que me mostrou essa pérola.

A funcionalidade que comentei no início do artigo é o comando DBCC CLONEDATABASE, este comando mágico, gera uma estrutura vazia da sua base de dados!!

Sim, imaginem a infinidade de possibilidades que podemos fazer com isso?

Adeus Generate Scripts?? 😊

O mais legal de tudo, isso é nativo, você não precisa criar nada!!

Segue o link com a documentação oficial deste magnifico recurso do SQL Server :

https://docs.microsoft.com/pt-br/sql/t-sql/database-console-commands/dbcc-clonedatabase-transact-sql?view=sql-server-ver15

Abaixo um exemplo prático de como utilizar esse comando.

 

No primeiro parâmetro, colocaremos a nossa base de Origem , ou seja , a base de dados que desejamos clonar, no segundo parâmetro, informamos um nome para a nossa base de Destino.

Vale lembrar que NÃO precisamos ter essa nova base criada no ambiente, o SQL faz a criação automaticamente!!

O parâmetro WITH VERIFY_CLONEDB, fará uma série de validações quando o uso do banco é destinado ao uso em produção.

É importante mencionar que o SQL Server irá gerar a base em READ_ONLY, portanto, se quiser escrever na base, precisará passar para READ_WRITE.

Agora com a estrutura clonada, podemos trabalhar nas demais etapas do nosso plano de ação para converter os nossos dados para a nova base.

Genial essa funcionalidade, não é mesmo?

Ahhh mais um ponto super importante, não é possível clonar bases de sistema (Master, Model, Msdb, etc)  e isso só está disponível a partir do SQL Server 2014, ok?

Se gostou, deixa um comentário!

Um grande abraço, até a próxima pessoal!!!

Gustavo Larocca

Consultor SQL Server

 

2 comentários

  1. Que post TOP!!! Essa funcionalidade pode ser muito útil e muita gente não conhece ou nunca usou (igual eu kkk).

    Mandou bem gato!!!

    Abraço,
    Luiz Vitor

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.