Eu tenho o SQL 2012 com SP1 instalado no meu computador. Fiz um backup de um banco de dados test.bak
.
Tenho um banco de dados com o nome test2
que é o mesmo banco de dados, mas os dados mudaram.
Eu quero restaurar test.bak
sobre test2
banco de dados.
Estou sempre recebendo o erro:
Erro 3154: O conjunto de backup contém um backup de um banco de dados diferente do banco de dados existente.
Eu tentei:
eu cliquei com o botão direito
test2 -> Restore database -> From device
Eu escolhi
test.bak
e verifiqueiWith Replace
, mas recebo o erro.Então eu tentei clicar com o botão direito do mouse em
test2 -> Restore file and filegroups
Eu escolhi
test.bak
e verifiqueiWith Replace
, mas recebo o erro.
Posso excluir meu banco de dados antigo e restaurar meu backup com o nome correto, mas quando estava usando o SQL 2008, não tive problemas para restaurar um banco de dados existente.
Parece que desde que eu uso o SQL2012, recebo muito esse erro!
Você deve usar
WITH REPLACE
e, em geral, evitar usar as coisas de apontar e clicar no Management Studio - elas são inflexíveis e geralmente têm bugs.Isso funcionou para mim:
Além disso, você deve se certificar ao fazer backup de bancos de dados que você usa
WITH INIT
e/ou não apontar o dispositivo para um arquivo que já contém um backup (já que pode não ser o mesmo banco de dados que você está fazendo backup agora - especialmente se você reutilizar nomes comotest
...).Você está restaurando o banco de dados errado. Não pense nisso como "restaurar
test2
com um backup detest
", pense em "restaurar meu backup detest
, mas renomeá-lo comotest2
". Você pode escolher a tarefa de restauraçãotest
e colocartest2
no campo "Para banco de dados:".Como Aaron menciona, aprenda o script em vez de confiar no assistente - é mais claro o que está acontecendo e onde.
1) Use
WITH REPLACE
enquanto estiver usando oRESTORE
comando.2)
DROP
o banco de dados mais antigo que está em conflito e restaure novamente usandoRESTORE
o comando.Não há problema com a versão do SQL Server. Como Aaron apontou, também posso restaurar o banco de dados de 2008 a 2012 e as mesmas versões também.
Você ainda pode fazer isso, mas requer uma etapa extra.
Abra a caixa de diálogo de restauração, faça suas seleções usuais de acordo com os hábitos de 2008. Se o banco de dados original for DB, escolha o dispositivo DB.bak para Origem e altere o nome de destino para DBTest. Em seguida, em Selecionar uma página (canto superior esquerdo), você vê Geral / Arquivos / Opções - escolha Arquivos. Olhe na grade. Você verá colunas para Nome de arquivo original e Restaurar como nome de arquivo. Aumente manualmente o último e digite o novo nome (se o nome original do banco de dados for DB e você deseja criar DBTest, altere ....\DB.mdf para ...\DBTest.mdf, etc.)
Isso aceitará seu arquivo .bak para DB como origem e DBTest como destino. Você também pode precisar ir para a página Opções e escolher Com Substituir. Eu preciso por outros motivos, então não posso testá-lo sem essa opção.
A resposta correta, como apontado, é usar a
WITH REPLACE
opção.Eu só quero salientar que você pode obter o erro na pergunta mesmo ao usar
WITH REPLACE
, se você tentar restaurar a partir de um backup diferencial (sem o completo).Espero que isso funcione.
Por favor, pare seu servidor em execução e, em seguida, restaure o db, isso irá ajudá-lo. :)