Fim do Suporte SQL 2008 – Migração utilizando o DBATools

Olá pessoal tudo certo?

No post de hoje vamos dar continuidade na série sobre Migração do SQL Server. Esta série teve início no post que falei sobre o fim do ciclo de vida do suporte do SQL Server 2008, que está agendado para o mês de Julho de 2019.

Nos posts anteriores eu falei sobre a importância de realizar a migração do SQL Server 2008, bem como a evolução do produto desde o SQL Server 2008. Já no último post, falei sobre como o DMA (Data Migration Assistant) pode nos auxiliar na migração.

Hoje vamos conhecer um pool de scripts em Power Shell (PS) que praticamente migram sozinho uma instância pra gente. Estou falando do DBATools. Os scripts estão disponíveis para download no site http://dbatools.io, onde também encontraremos uma documentação completa de como podemos utilizar os scripts.

O pool de scripts é desenvolvido por diversos profissionais, parte pelo princípio de ser um conjunto de ferramentas de código aberto e principalmente é uma ferramenta FREE. Então se você gosta de desenvolver scripts em PS, você pode submeter para o time de avaliação, se estiver tudo certo ele também passa a fazer parte do pool de scripts. Hoje 24, de Abril de 2019 já existem mais de 500 scripts disponíveis para nos auxiliar nas tarefas do dia-a-dia e para migrar uma instância.

Mas vamos lá! Como faço a instalação do DBATools?

Apesar de não estar na documentação, eu sempre recomendo você atualizar o seu Power Shell para uma versão acima de 5.0. Para você verificar qual é a versão do PS que está instalado na sua máquina ou no servidor, basta executar o seguinte comando $PSversiontable”.

Se o “PSVersion” estiver acima da versão 5.0 nós podemos prosseguir. Caso contrário, recomendo que você atualize a versão do Power Shell.

Para realizar a atualização basta clicar no link (
https://docs.microsoft.com/en-us/powershell/scripting/install/installing-windows-powershell?view=powershell-6 ).

Uma observação é que os scripts não precisam ser instalados nos servidores, podem simplesmente ser instalados na sua estação de trabalho.

Dando continuidade, agora vamos executar a instalação do módulo DBATools. Para isso, vamos executar o seguinte comando install-module dbatools”, lembrando de executar o Power Shell com elevação de privilégios (Executar como Administrador).

Irá aparecer uma informação sobre o módulo, em seguida será solicitado uma confirmação se você realmente deseja prosseguir com a instalação.

Na tela abaixo, podemos ver o progresso da instalação do módulo.

Após ter o DBATools instalado na sua estação ou no servidor, você não precisa reinstalar toda vez que sair uma nova atualização. Para isso, basta utilizar o comando “update-module dbatools”.

Novamente será apresentado informações sobre e módulo e será solicitado uma confirmação se realmente você deseja atualizar.

Pronto, agora estamos com todos os scripts disponíveis para utilização. Eu executo uma atualização do DBATools mensalmente, pois sempre tem alguma novidade ou melhoria nos scripts.

Agora vamos ao que realmente interessa, vamos colocar a mão na massa e executar uma migração utilizando o DBATools. #gogogo

Vamos iniciar utilizando os scripts de migração. Se você quiser conhecer mais informações sobre esses scripts, basta acessar o site do DBATools (https://dbatools.io/commands/) na categoria migração (“Migration”).

Copy-DbaAgentAlert – Este script copia os Alertas configurados no SQL Server Agent. Estes alertas são alguns alertas que podemos pré-definir no SQL Server.

Copy-DbaAgentAlert -Source sql24 -Destination sql22.

Copy-DbaAgentJobCategory – Este script copia as Categorias dos JOBs, se você utilizar categorias para os jobs você pode migrar, se não utilizar não é necessário migrar.

Copy-DbaAgentCategory -Source sql24 -Destination sql22

Copy-DbaAgentOperator – Este script copia os Operadores que estão cadastrados no SQL Server Agent. Eles são aqueles e-mails ou grupos que recebem notificação no caso de algum JOB falhar.

Copy-DbaAgentOperator -Source sql24 -Destination sql22

IMPORTANTE: Antes de migrar os JOBs, eu prefiro migrar as bases de dados, para não dar erro informando que o banco de dados não existe.

Então agora vamos migrar os bancos de dados. Para realizar essa migração podemos fazer utilizando um “detach e attach” ou também podemos fazer via “backup e restore”. Particularmente eu prefiro sempre fazer um backup e restore, pois como estamos fazendo uma migração de versão do SQL Server, saindo de um SQL Server 2008 R2 para um SQL Server 2017, o processo de ROLLBACK será mais rápido. Mas para fazer o detach e attach e só alterar o parâmetro.

Obs: O script vai attachar as bases no diretório que estiver configurado como padrão na instalação.

Copy-DbaDatabase – Este script realiza a migração da base de dados, seja por “backup e restore” ou “detach e attach”. Existem alguns parâmetros que podem nos ajudar a deixar essa migração bem customizada, para mais informações consulte o site do DBATools.

Copy-DbaDatabase -Source sql24 -Destination sql22 -BackupRestore -SharedPath "\\sql22\BKP\" -database "Stackoverflow"

Copy-DbaLogin – Este script migra os Logins entre as instâncias. Existem alguns parâmetros que podemos utilizar também para sincronizar somente alguns usuários, caso você não queira migrar todos.

Copy-DbaLogin -Source sql24 -Destination sql22

Copy-DbaAgentJob – Este script migra os JOBs entre as instâncias. Ele possui alguns parâmetros que podemos utilizar para criar o JOB desabilitado, excluindo na origem por exemplo ou até mesmo fazer uma query para realizar a migração.

Copy-DbaAgentJob -Source sql24 -Destination sql22 -DisableOnSource -DisableOnDestination

Copy-DbaSpConfigure – Com este script podemos migrar as Configurações da Instância. Como nos comandos anteriores, existem parâmetros para selecionar quais configurações você quer migrar ou ignorar.

Copy-DbaSpConfigure -Source sql24 -Destination sql22

Copy-DbaLinkedServer – Este script migra os Linked Servers entre os servidores. Nesse caso, também temos a opção de escolher quais Linked Servers queremos migrar ou não.

OBS: Nesse caso, um erro bem comum é quando o destino não tem o driver utilizado no servidor de origem. Esses problemas normalmente acontecem quando migramos Linked Server de outras plataformas, por exemplo o Oracle.

Copy-DbaLinkedServer -Source sql24 -Destination sql22 -UpgradeSqlClient

Como estou migrando o Linked Server de um servidor SQL Server 2008 R2 para um SQL Server 2017, estou passando o parâmetro para atualizar o SQL Client (-UpgradeSqlClient) na migração.

Para uma migração básica, normalmente são esses os objetos que migramos, mas existem outros scripts que podemos utilizar para migração, como o Copy-DbaDbAssembly, Copy-DbaXESession, Copy-DbaServerTrigger, Copy-DbaDbMail entre outros. A lista completa dos scripts de migração pode ser encontrada no site do DBATools.

Com esse post estamos finalizando a série sobre o “Fim do Suporte do SQL Server 2008”. Segue abaixo o LINK dos posts anteriores com um passo-a-passo de como fazer a migração.

Fim do Suporte SQL Server 2008. Você está preparado?

Fim do Suporte SQL 2008 – Migração DMA – On-Premises x On-Premises e On-Premises x Azure

Se tiver dúvidas de como realizar a migração, nós do #TeamFabricioLima
(https://www.fabriciolima.net/) estamos à disposição para ajudar a entender as diferenças entre as licenças, orçamento de licenças, evolução do produto e até mesmo realizar a migração na sua empresa.

Espero que tenham gostado e até a próxima.

Um abraço,

Tiago Neves

“Curta a nossa página no Facebook e fique por dentro das novidades.”

Deixe uma resposta