Migrando Bancos de Dados com Dbatools

Um blog sobre banco de dados

Migrando Bancos de Dados com Dbatools

Tempo de Leitura: 6 minutos

Introdução

Fala galera.

Hoje estou escrevendo o primeiro post do blog e resolvi iniciar falando sobre migração de bancos de dados utilizando o Dbatools, um módulo do PowerShell que eu já sabia da existência, mas particularmente comecei a utilizar a pouco tempo.

O Dbatools é ideal para realizar manutenções e outras tarefas trabalhosas de forma simples e consequentemente economizar tempo, que sabemos que no nosso dia a dia é algo valioso.

Como gostei bastante da praticidade de executar procedimentos complexos em poucos passos e com ótimos resultados, vou mostrar uma das atividades que realizei a pouco tempo, que é a migração de bancos de dados e que considerei muito simples de se fazer.

Para inciar precisamos entender o que é o Dbatools, que resumidamente é um módulo do PowerShell gratuito que pode ser utilizado para realizar atividades de administração, desenvolvimento e migração do SQL Server.

Como o foco desse post não é explicar detalhadamente o que é o Dbatools e sim mostrar a utilização de um dos seus procedimentos, caso queiram mais informações a respeito, é possível encontrar no site do módulo acessando o seguinte link:

https://dbatools.io

Instalação do Dbatools

Requisitos Mínimos 

Servidor
  • SQL Server 2000
  • Powershell 2.0
Estação de trabalho
  • Windows 7 com PowerShell 3
  • Linux ou macOS com PowerShell 6.1

Instalação

Então vamos à instalação do Dbatools para começar a demonstração.

Como instalar o módulo no PowerShell:

1 – Executar o PowerShell como administrador.
2 – Digitar o comando Install-Module dbatools no PowerShell conforme abaixo: 

3 – Digitar o comando Get-Module dbatools -ListAvailable para verificar se o módulo foi instalado e já está disponível para uso conforme abaixo:

Após a execução do comando recebemos a seguinte mensagem que nos mostra que o módulo foi instalado:

Pronto! Simples assim.

Migração dos bancos de dados utilizando Detach e Attach

Agora com o Dbatools instalado podemos partir para o ponto focal deste post que é migrar bancos de dados de uma instância para outra de maneira mais ágil e simples do que realizar todos os procedimentos envolvidos em uma migração convencional.

NOTA: Isso não elimina a necessidade de realizar as atividades de precaução para executar uma migração, tais como backup dos bancos de dados e outros procedimentos pertinentes a cada cenário. Planeje bem a migração e tenha todas as garantias de que se algo der errado você tem como recuperar seus bancos de dados.

Então vamos lá.

O método que utilizei para realizar este laboratório é de migração através do detach e attach (desanexar e anexar), ou seja, desanexar na origem, copiar e anexar no destino os arquivos de dados dos bancos de dados de uma instância para outra.

Nenhum arquivo é excluído da origem, mas é bom lembrar que o procedimento de desanexar e anexar novamente o banco de dados gera indisponibilidade temporária enquanto cada arquivo de dados é manipulado. É indicado que esse procedimento seja realizado em caso de migração onde o ambiente esteja parado para realizar a manutenção.

Existe também a possibilidade de realizar o procedimento através de backup e restore, que será tratado em um outro post.

Dando continuidade vamos conhecer o cenário.

Será realizada a migração da instância DESKTOP-1V28U1 para a instância DESKTOP-1V218U1\MSSQLSERVER1. A primeira instância já possui alguns bancos de dados criados e a segunda ainda não possui nenhum banco de dados conforme imagem abaixo:

Migração de um banco de dados

Agora vamos para o PowerShell realizar primeiramente a migração de um banco de dados.

O comando para realizar a migração entre as duas instâncias é o seguinte:

Onde -Source indica a instância de origem, -Destination a instância de destino e -Database o banco de dados que desejamos migrar.

NOTA: Se as instâncias estiverem em servidores diferentes é importante verificar se os mesmos estão se comunicando para que seja possível realizar esse procedimento. Além disso, devem ser trocados os nomes das instâncias e do banco de dados para os nomes correspondentes ao ambiente onde o script será executado.

Após o comando ser executado, recebemos a seguinte mensagem:



Podemos observar que o banco de dados foi criado na instância destino com sucesso:

Migração de Vários Bancos de Dados

Agora será realizado o procedimento de copiar todos os bancos de dados da instância origem para a instância destino. Observem que os bancos de dados de sistemas (master, model, msdb e tempdb) serão desconsiderados.

A única diferença entre o comando para migrar apenas um banco de dados e o comando para migrar todos os bancos de dados é que dessa vez será especificada a opção -AllDatabases.

Após o comando ser executado, recebemos a seguinte mensagem:

Podemos observar que todos os bancos de dados foram criados na instância de destino com sucesso:

Comparativo

Após os procedimentos realizei um comparativo entre o tamanho que ficaria cada script T-SQL e o tamanho dos scripts PowerShell que foram executados na migração e o resultado é o seguinte:

Um banco de dados

 

 

 

 

Quatro bancos de dados(quantidade utilizada na demonstração)

 

 

 

 

Conclusão 

A ideia desse post é apresentar uma possibilidade bem simples do que se pode fazer utilizando o módulo do Dbatools e difundir a sua utilização que pode ajudar muito nas tarefas do dia a dia de um DBA.

Recomendo o acesso ao site (https://dbatools.io) para um melhor entendimento de todas as atividades que são oferecidas pelo módulo.

É isso pessoal.

Qualquer dúvida ou sugestão deixem nos comentários que irei responder o mais rápido possível.

Agradeço a todos que tiveram o interesse de ler esse primeiro post e conhecer o blog. Espero de agora em diante contribuir bastante com a comunidade de dados.

Até a próxima!!!

Referências:

 

5 3 votes
Article Rating
Subscribe
Notify of
guest

8 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Felipe Portela

Muito bom artigo! Parabéns pela iniciativa.

Pedro Magalhães

Muito bom meu amigo!!!!
Vou acompanhar aqui direto.

Edson

A ferramenta tem que está instalada na instância primária , ou seja , a que vai fazer a transferência ?

Gustavo Larocca

Parabéns pelo post Anderson. O DBA Tools sem duvidas é uma caixa de ferramentas que ajuda em uma gama de possibilidades na vida de um DBA!! Continue assim meu parceiro!