Um jeito simples de clonar a estrutura do seu banco de dados
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 :
Abaixo um exemplo prático de como utilizar esse comando.
1 | DBCC CLONEDATABASE (BASE_ORIGEM,BASE_ORIGEM_CLONE) WITH VERIFY_CLONEDB; |
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.
1 | ALTER DATABASE BASE_ORIGEM_CLONE SET 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
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
Obrigado meu querido!!!
Você me inspira!! Eu que agradeço pela nossa parceria no dia a dia!!
Tamo junto mano =)
Grande abraço!!