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:
- Script for Server Version (Vers??o de Script do Server): SQL Server 2005
- Script Data (Script de Dados): True
- 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…
3 respostas em “Exportar Banco de Dados (BAK ou MDF) do SQL Server 2008 para o 2005”
O comando n??o funcionou para mim, acho que por causa da autentica????o para acessar a base no sql server, que para mim exige um usu??rio (sa) e senha…
Alguma dica para usar o comando para essa maneira?
Alan, no comando basta alterar assim:
sqlcmd -U sa -P senha -S SERVIDORINSTANCIA -d BancoDeDados -i C:ScriptSQL.sql -o C:LogExecucao.txt
Thiago, muito obrigado!
Realmente funcionou certinho.
Recomendo a quem mais precisar do recurso.
Para mim foi 100% eficaz!