Database
 sql >> Base de Dados >  >> RDS >> Database

Migração de bancos de dados SQL com linha de comando


E se você tiver dezenas de bancos de dados SQL e o backup/restauração manual de cada banco de dados for muito demorado para o seu projeto? Sem problemas! Podemos criar um script de um método que exporte e importe todos os bancos de dados de uma só vez sem a necessidade de intervenção manual. Para obter ajuda com a transferência de logins SQL e procedimentos armazenados e exibições, consulte nosso artigo MSSQL Migration with SSMS.

Fazendo backup de bancos de dados no servidor de origem


1. Abra o SSMS (Microsoft SQL Server Management Studio) no servidor de origem, faça login na instância SQL e abra uma janela Nova consulta. Execute a seguinte consulta:

SELECT name FROM master.sys.databases

Este comando produzirá uma lista de todos os bancos de dados MSSQL em seu servidor. Para copiar esta lista, clique em qualquer lugar nos resultados e use o atalho de teclado CTRL+A (Command + A para usuários de Mac) para selecionar todos os bancos de dados. Depois de destacar todos os bancos de dados, clique com o botão direito e selecione copiar.

2. Abra o Bloco de Notas, cole seus resultados e exclua todos os bancos de dados (no texto do bloco de notas recém-copiado) que você NÃO deseja migrar, além de excluir as seguintes entradas:
  • mestre
  • tempdb
  • modelo
  • msdb

Essas entradas são os bancos de dados do sistema e não é necessário copiá-las. Certifique-se de excluir tudo, exceto explicitamente os bancos de dados que você precisa migrar. Agora você deve ter uma lista de todos os bancos de dados necessários separados por uma linha. ou seja
  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Salve este resultado no computador como C:\databases.txt .

4. Crie uma nova janela do Bloco de Notas, copie/cole o seguinte no documento e salve-o como C:\db-backup.bat

mkdir %systemdrive%\dbbackups
for /F "tokens=*" %%a in (databases.txt) do ( sqlcmd.exe -Slocalhost -Q"BACKUP DATABASE %%a TO DISK ='%systemdrive%\dbbackups\%%a.bak' WITH STATS" )


5. Agora que você salvou o arquivo como C:\db-backup.bat, navegue até Iniciar menu e digite cmd e clique com o botão direito do mouse em Prompt de comando para selecionar Executar como administrador .Digite o seguinte comando:

cd C:\

E aperte enter. Depois, digite db-backup.bat e aperte enter mais uma vez.

Neste ponto, seus bancos de dados começaram a ser exportados e você verá o progresso percentual de cada exportação de banco de dados (foto abaixo).



Anote todos os bancos de dados com falha, pois você pode executar novamente o arquivo em lotes quando terminar, usando apenas os bancos de dados que podem ter falhado. Se o backup dos bancos de dados estiver falhando, observe a mensagem de erro exibida no prompt de comando, resolva o erro modificando o arquivo C:\databases.txt existente para incluir apenas os bancos de dados com falha e execute novamente db-backup.bat até que todos os bancos de dados sejam exportados com sucesso.

Restaurando bancos de dados no servidor de destino


Até agora você tem a pasta C:\dbbackups\ que contém arquivos .bak para cada banco de dados que você deseja migrar. Você precisará copiar a pasta e seu C:\databases.txt arquivo para o servidor de destino. Existem várias maneiras de mover seus dados para o servidor de destino; você pode usar USB, Robocopy ou FTP. A pasta na unidade C do servidor de destino deve se chamar C:\dbbackups . É importante nomear o arquivo com precisão, pois nosso script procurará os arquivos .bak aqui. Certifique-se de que o servidor de destino também tenha seu arquivo C:\databases.txt, pois nosso script estará procurando os nomes dos bancos de dados aqui.

1. Abra um bloco de notas e copie/cole o seguinte no documento e salve-o como C:\db-restore.bat

for /F "tokens=*" %%a in (C:\databases.txt) do (
sqlcmd.exe -E -Slocalhost -Q"RESTORE DATABASE %%a FROM DISK='%systemdrive%\dbbackups\%%a.bak' WITH RECOVERY"
)


2. Salve o arquivo como C:\db-restore .morcego

3. Navegue até o menu Iniciar e digite cmd .

4. Clique com o botão direito do mouse em Prompt de comando e selecione Executar como administrador . Digite o seguinte comando:

cd C:\

e pressione Enter. Agora digite db-restore.bat e pressione Enter.

Seus bancos de dados começaram a ser importados. Você verá a porcentagem de restauração de cada banco de dados e a mensagem “RESTORE DATABASE processado com sucesso ” para cada banco de dados que foi processado com sucesso.

Anote todos os bancos de dados com falha, pois você pode executar novamente o arquivo em lote quando terminar, usando apenas os bancos de dados que falharam. Se o backup dos bancos de dados estiver falhando, anote a mensagem de erro exibida no prompt de comando, resolva o erro (você pode alterar o arquivo em lote conforme necessário), modifique C:\databases.txt para incluir apenas os bancos de dados com falha e re -run db-restore.bat até que todos os bancos de dados sejam exportados com sucesso.

Parabéns, você fez backup e restaurou todos os seus bancos de dados no novo servidor. Se você tiver algum problema de login ao testar as conexões SQL no servidor de destino, consulte Migrando logins do Microsoft SQL (link âncora) seção deste artigo e siga as etapas nele contidas. Para migrar exibições ou procedimentos armazenados, consulte Migrando exibições e procedimentos armazenados seção. Cada servidor SQL terá suas configurações e obstáculos a enfrentar, mas esperamos que este artigo tenha lhe dado uma base sólida para sua migração do Microsoft SQL Server.