Categorias
backup exporta????o importa????o sql server

Exportar Banco de Dados (BAK ou MDF) do SQL Server 2008 para o 2005

A forma mais f??cil de transferir um banco para outro ?? fazer um BAK dele e depois recuperar do outro lado. Do 2005 para o 2008 ?? poss??vel realizar a recupera????o, mas do 2008 para o 2005 n??o ?? poss??vel realizar o downgrade. Qual a solu????o? Gerar o script geral do banco e execut??-lo no banco de destino. Mas se meu banco ?? muito grande, como fazer? A dica est?? no final do post, mas fa??amos tudo desde o in??cio.
Abra o SQL Server Management Studio (ou Express) e conecte-se ao Server. Clique com o bot??o direito sobre a base de dados e siga em Task (Tarefas) e escolha Generate Scritps (Gerar Scripts). Na tela de sele????o de base, marque a op????o Script all objects in the selected database (Scritp de todos os objetos da base selecionada) e avance. Nessa pr??xima tela procure os itens abaixo e atribua os seguintes valores:

  1. Script for Server Version (Vers??o de Script do Server): SQL Server 2005
  2. Script Data (Script de Dados): True
  3. Script USE DATABASE: False

Demais op????es fica a seu crit??rio optar… Agora avance e na pr??xima tela escolha salvar o arquivo em disco com as op????es Simples (Single file) e Unicode text. Avance, revise o que foi selecionado e finalize. Aguarde at?? que o processo seja finalizado. Quando terminado seu script j?? estar?? pronto para ser executado no destino.
O pr??ximo passo ?? executar o script gerado na base de destino. Crie a base de destino vazia e agora temos duas op????es:

  • Se o script gerado for pequeno (ou seja base pequena) podemos simplesmente abrir pelo pr??prio SQL Server Management e executar como se fosse Querys consecutivas;
  • Se o script for grande vamos usar um artif??c??o para isso.

Como a primeira op????o ?? a mais simples (e tamb??m porque gosto de aventurar-me) vamos optar pela segunda (e que tamb??m ?? nossa realidade). No meu exemplo, o script gerado ficou em torno de 1,5Gb. Se desejar reduzir o tamanho um pouco, ??s vezes, reduzir o log ajuda (saiba como reduzir aqui) antes de gerar o script.
Abra o Prompt de Comando (emulador do DOS no Windows) e digite o seguinte comando:

sqlcmd -U thiago -P blog -S THIAGOMARCALSQLEXPRESS -d BaseBlog -i C:ScriptSQL.sql -o C:LogExecucao.txt

Explicando os atributos:

  • U: informa o nome do usu??rio que est?? conectando (no caso, o usu??rio thiago);
  • P: informa a senha do usu??rio (a senha ?? blog);
  • S: nome do servidor (como est?? na minha m??quina a inst??ncia ?? THIAGOMARCALSQLEXPRESS);
  • d: nome da base nova que receber?? o resultado do script (BaseBlog ?? o nome da nova base criada);
  • i: local onde salvei o script de dados e que usarei como entrada;
  • o: arquivo de texto contendo o resultado da opera????es (log para an??lise – opcional).

D?? ENTER e aguarde toda a opera????o ser executada. Para quaisquer tamanho do arquivo ele ser?? processado sem problemas. Se tentasse abrir pelo SQL Server um arquivo muito grande daria erro de aloca????o de mem??ria, ou demoraria e nem conseguiria executar exibindo alguns dos seguintes erros:

  • Cannot Open Datafile
  • Insufficient memory
  • Out of Memory Exception

Dessa forma ?? mais tranquilo…