ProHoster > Blog > administração > Transferindo dados de backup de uma nova versão do MS SQL Server para uma versão mais antiga
Transferindo dados de backup de uma nova versão do MS SQL Server para uma versão mais antiga
Pré-história
Certa vez, para reproduzir um bug, precisei de um backup do banco de dados de produção.
Para minha surpresa, encontrei as seguintes limitações:
O backup do banco de dados foi feito na versão SQL Server 2016 e não era compatível com o meu SQL Server 2014.
No meu computador de trabalho, o sistema operacional usado foi Windows 7então não consegui atualizar SQL Server até a versão 2016
O produto suportado fazia parte de um sistema maior com uma arquitetura herdada fortemente acoplada e também se comunicava com outros produtos e bases, portanto, poderia levar muito tempo para implantá-lo em outra estação.
Diante do exposto, cheguei à conclusão de que chegou a hora de muletas de soluções não padronizadas.
Restaurando dados de um backup
Eu escolhi usar uma máquina virtual Oracle VM VirtualBox com o Windows 10 (você pode tirar uma imagem de teste para o navegador Edge por isso). O SQL Server 2016 foi instalado na máquina virtual e o banco de dados do aplicativo foi restaurado a partir do backup (instrução).
Configurando o acesso ao SQL Server em uma máquina virtual
Em seguida, foi necessário seguir alguns passos para poder acessar o SQL Server de fora:
Para o firewall, adicione uma regra para ignorar solicitações de porta 1433.
É desejável que o acesso ao servidor não passe pela autenticação do Windows, mas sim pelo SQL usando login e senha (é mais fácil configurar o acesso). No entanto, neste caso, você precisa se lembrar de habilitar a Autenticação do SQL nas propriedades do SQL Server.
Nas configurações do usuário no SQL Server na guia Mapeamento do usuário especifique a função do usuário para o banco de dados restaurado db_securityadmin.
Transferência de dados
Na verdade, a própria transferência de dados consiste em duas etapas:
Transferência de esquema de dados (tabelas, exibições, procedimentos armazenados, etc.)
Transferindo os dados em si
Transferência de esquema de dados
Realizamos as seguintes operações:
selecionar Tarefas -> Gerar Scripts para uma base portátil.
Selecione os objetos que deseja transferir ou deixe o valor padrão (neste caso, serão criados scripts para todos os objetos do banco de dados).
Especifique as configurações para salvar o script. É mais conveniente salvar o script em um único arquivo Unicode. Então, em caso de falha, você não precisa repetir todas as etapas novamente.
Uma vez salvo o script, ele pode ser executado no SQL Server original (versão antiga) para criar a base necessária.
Nota: Depois de executar o script, você precisa verificar a correspondência entre as configurações do banco de dados do backup e o banco de dados criado pelo script. No meu caso, não havia configuração para COLLATE no script, o que levou a uma falha na transferência de dados e dançando com um pandeiro para recriar o banco de dados usando o script complementado.
Transferência de dados
Antes de transferir dados, você deve desabilitar a verificação de todas as restrições no banco de dados:
A transferência de dados é realizada usando o assistente de importação de dados Tarefas -> Importar dados no SQL Server, onde está localizado o banco de dados criado pelo script:
Especifique as configurações de conexão com a origem (SQL Server 2016 em uma máquina virtual). eu usei fonte de dados Cliente Nativo do SQL Server e a autenticação SQL acima mencionada.
Especifique as configurações de conexão para o destino (SQL Server 2014 na máquina host).
Em seguida, configure o mapeamento. Todos devem ser selecionados não somente leitura objetos (por exemplo, vistas não precisam ser selecionadas). Como opções adicionais, selecione "Permitir inserção em colunas de identidade"se forem usados. Nota: se, ao tentar selecionar várias tabelas e definir suas propriedades "Permitir inserção em colunas de identidade" a propriedade já foi definida para pelo menos uma das tabelas selecionadas, o diálogo indicará que a propriedade já foi definida para todas as tabelas selecionadas. Esse fato pode ser confuso e levar a erros de migração.
Se ocorrer algum erro, verificamos as configurações, excluímos o banco de dados criado com erros, recriamos a partir do script, fazemos correções e repetimos a transferência de dados.
Conclusão
Essa tarefa é bastante rara e ocorre apenas devido às limitações acima. A solução mais comum é atualizar o SQL Server ou conectar-se a um servidor remoto se a arquitetura do aplicativo permitir. No entanto, ninguém está imune ao código legado e às mãos desonestas do desenvolvimento de baixa qualidade. Espero que você não precise desta instrução, mas se ainda precisar, ajudará a economizar muito tempo e nervos. Obrigado pela sua atenção!