O conjunto de backup mantém um backup de um banco de dados diferente do existente

485

Estou tentando restaurar um arquivo de backup do SQL Server para meu banco de dados, mas está lançando um erro da seguinte maneira:

O conjunto de backup mantém um backup de um banco de dados diferente do existente

Meu banco de dados no SQL Server 2008 e o arquivo de backup estão em 2005.

Qual pode ser o problema?

RD
fonte
95
A resposta altamente votada abaixo é uma marreta para quebrar uma noz. O problema é mais provável que você não tenha selecionado a opção " Substituir o banco de dados existente (COM SUBSTITUIÇÃO) " na janela Restaurar> Opções . Eu tive esse problema na linha de comando usando WITH MOVEe foi corrigido usando WITH REPLACE, MOVE.
James McCormack
Eu tenho o mesmo erro em um dos meus bancos de dados, mas apenas quando o SQL Server Agent está desativado. Se eu ligá-lo, não há erro e posso restaurar sem problemas. Meu arquivo BAK contém apenas um único banco de dados e esse nome (e nomes de arquivos lógicos) são exclusivos no meu servidor.
Desenvolvedor Webs

Respostas:

807

Eu também me deparei com esta questão.

Solução:

  • Não crie um banco de dados vazio e restaure o .bakarquivo nele.
  • Use a opção 'Restaurar banco de dados' acessível clicando com o botão direito do mouse na ramificação "Bancos de dados" do SQL Server Management Studio e forneça o nome do banco de dados enquanto fornece a origem para restauração.
  • Altere também os nomes dos arquivos em "Arquivos" se o outro banco de dados ainda existir. Caso contrário, você obterá "O arquivo '...' não poderá ser substituído. Ele está sendo usado pelo banco de dados 'yourFirstDb'".
sunil_philip
fonte
102
Seria tão fácil para SSMS para me dizer isso quando ocorre o erro
CJA
16
+1 em " Não crie um banco de dados vazio e restaure o arquivo .bak nele " ... sim, isso resolve. (Mas por que não tive esse problema todas as outras vezes que fiz a mesma coisa? E não começamos a fazer essa pré-criação em primeiro lugar como uma solução alternativa para alguma outra mensagem de erro inexplicável?:])
Reg Editar
Alguém deve marcar isso como resposta, porque foi o conselho de que eu precisava para restaurar com êxito um backup.
Doreen
2
No Restaurar banco de dados, fui para Arquivos, Restaurar como e coloquei nomes de arquivos exclusivos, pois ainda tinham os nomes originais dos arquivos de dados e log.
Dave Mateer 27/07/2015
2
Altere também os nomes dos arquivos em "Arquivos" se o outro banco de dados ainda existir. Caso contrário, você obterá "O arquivo '...' não poderá ser substituído. Ele está sendo usado pelo banco de dados 'yourFirstDb'".
Verena Haunschmid 8/11
175

Ou:

1) Use WITH REPLACEenquanto estiver usando o RESTOREcomando (se estiver usando a GUI, ele será encontrado em Opções -> Substituir o banco de dados existente ( WITH REPLACE)).

2) Deleteo banco de dados mais antigo que está em conflito e restaura novamente usando o RESTOREcomando

Verifique o link para mais detalhes.

Amarnath
fonte
1
copiado a partir do link e desde que o destino como bem .. * suspiro * (inteligente)
Abhijeetchindhe
4
@Abhijeetchindhe haha .. Re-usabilidade e cortesia .. :)
Amarnath
:) Um software honesto Er you are! Enfim, essa é a melhor resposta para esta pergunta. E se voto para o tempo que você tem tirado de encontrá-lo :)
Abhijeetchindhe
1
Teve o mesmo problema que o op e esta resposta funciona muito bem. +1
Esteban,
1
Essa opção WITH REPLACE também foi a solução que eu precisava. Obrigado!
Adam
90

Primeiro, crie um banco de dados em branco com o mesmo nome. Em seguida, vá para a opção de restauração

Em Opções no painel esquerdo, não se esqueça de selecionar

  • Sobrescrever o banco de dados existente
  • Preserve as configurações de replicação

insira a descrição da imagem aqui

É isso aí

HimalayanCoder
fonte
51

Já enfrentaram o mesmo problema e encontraram a solução fazendo isso, usando o SSMS 2014

- Basta selecionar a opção Substituir o banco de dados existente (WITH REPLACE) 

Banco de dados existente> Tarefa> Restaurar> Banco de dados

Smit Patel
fonte
34
USE [master];
GO

CREATE DATABASE db;
GO

CREATE DATABASE db2;
GO

BACKUP DATABASE db TO DISK = 'c:\temp\db.bak' WITH INIT, COMPRESSION;
GO

RESTORE DATABASE db2
  FROM DISK = 'c:\temp\db.bak'
  WITH REPLACE,
  MOVE 'db' TO 'c:\temp\db2.mdf',
  MOVE 'db_log' TO 'c:\temp\db2.ldf';
Elsoni
fonte
33

3 etapas simples:

1- Clique com o botão direito do mouse no banco de dados → Tarefas → Restaurar → Banco de Dados

2- Verifique Devicecomo fonte e localize o arquivo .bak (ou zipado .bak)

3- No painel esquerdo, clique em optionse:

  • marque Substituir o banco de dados existente.
  • desmarque Fazer backup do log de cauda antes da restauração
  • marque Fechar a conexão existente com o banco de dados de destino.

Outras opções são realmente opcionais (e importantes, é claro)!

Ali Sheikhpour
fonte
23

É porque os arquivos .mdfe .ldfdo original Dbforam localizados em talvez c:\programFile\....e essa informação é salva no backup!

Se você criar o mesmo banco de dados em um SQL Server diferente em que a instalação está, c:\program Files (x86)\ ....não será possível restaurar normalmente. Você precisa realocar o caminho para .mdfe .ldfArquivos.

Portanto:

  • Crie um banco de dados vazio no novo servidor

  • Clique com o botão direito do mouse em Db vazio> Tarefas> Restaurar> Banco de Dados> clique em Dispositivo, selecione seus .bakArquivos> Selecionar Db para restaurar

  • clique em Arquivos no lado esquerdo> Selecione "Realocar todos os arquivos para a pasta"
  • clique em Opções no site esquerdo> clique em Substituir

Feito!
Espero que ajude!

AJUDANTE
fonte
16

Eu tive um problema semelhante hoje. Tentei todas as soluções acima, mas não funcionou. Então, postando minha solução aqui.

Não se esqueça de desmarcar o backup completo antes de restaurar

Não se esqueça de desmarcar o backup completo antes de restaurar

Espero que ajude os outros também!

immayankmodi
fonte
Isto é o que funcionou para mim. Obrigado!
Bill Norman
16

Se você estiver usando a abordagem de script e tiver um erro relacionado aos arquivos LDF e MDF, poderá primeiro consultar o arquivo de backup pelos nomes lógicos (e outros detalhes) dos arquivos no conjunto de backup, usando o seguinte:

-- Queries the backup file for the file list in backup set, where Type denotes 
-- type of file. Can be L,D,F or S
-- info: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO

Você obterá resultados semelhantes aos seguintes:

insira a descrição da imagem aqui

E então você pode usar esses nomes lógicos nas consultas:

    -- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
    RESTORE DATABASE DB 
    FROM DISK='C:\Temp\DB_backup.bak'
    WITH REPLACE,
      MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
      MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.ldf'; -- "DB_log" is LDF logical name from query above

Mais informações RESTORE FILELISTONLY podem ser encontradas nos documentos do SQL Server .

user919426
fonte
Eu tive o mesmo problema na pergunta e, no meu caso, o backup do banco de dados era do servidor remoto e tive que criar a mesma estrutura de pastas na minha unidade D que se assemelha à saída da primeira consulta. Em seguida, a segunda consulta funcionou corretamente e o banco de dados foi restaurado.
rinilnath
11

Também é importante garantir que o nome do banco de dados corresponda ao nome do banco de dados no backup que você está tentando restaurar. Se não corresponder, você receberá o mesmo erro.

Andrew Marais
fonte
Este parece ser especialmente verdadeiro se você tiver vários arquivos / grupos de arquivos e tabelas particionadas
AlexC
9

Antes de fazer qualquer outra coisa, confirme se seu backup é Completo ou Diferencial. Se você estiver tentando criar um novo banco de dados a partir de um backup diferencial, não importa o que faça, encontrará o erro.

Tots Benedicto
fonte
1
Esse era o problema que eu estava enfrentando, então obrigado por isso !!! (Eu não sabia que o arquivo de backup era realmente um backup diferencial.). Veja como verificar: "RESTORE HEADERONLY FROM DISK = 'C: \ myfile.bak'" Nos resultados, BackupType of 1 = Backup completo. BackupType of 5 = Backup diferencial.
Wimpie Ratte 02/11
9

system.data.sqlclient.sqlerror: o conjunto de backup mantém um backup de um banco de dados diferente do banco de dados 'Dbname' existente

Me deparei com encontrar soultion

  1. Não crie um banco de dados com o mesmo nome ou nome de banco de dados diferente!

  2. clique com o botão direito do mouse no banco de dados | Tarefas> Restaurar> Banco de Dados

  3. Em "Origem para restauração", selecione "Do dispositivo"

  4. Selecione o arquivo .bak

  5. Marque a caixa de seleção do banco de dados na visualização em grade abaixo

  6. Para o DataBase: "Aqui você pode digitar o novo nome do banco de dados" (Ex: DemoDB)

  7. Não selecione o banco de dados existente da lista suspensa

  8. Agora, clique no botão OK, ele criará um novo banco de dados e restaurará todos os dados do seu arquivo .bak.

você pode obter ajuda nesse link mesmo

Espero que ajude a resolver seu problema ...

akshay5662
fonte
1
"Não crie um banco de dados com o mesmo nome ou nome de banco de dados diferente! Importante." O que você quer dizer?
sajid
6

Isso causa sempre devido à incompatibilidade de versão. siga estas etapas para resolver:

Etapa 1: Crie um banco de dados com seu nome preferido. (No nosso caso, AdventureWorks)

Etapa 2: Escreva, clique no banco de dados e clique em Tarefas >> Restaurar >> Banco de Dados ...

insira a descrição da imagem aqui

Etapa 3: Na tela de restauração, vá para a terceira seleção de Opções. Agora marque a caixa de seleção "Substituir o banco de dados existente (COM SUBSTITUIR)"

insira a descrição da imagem aqui

Etapa 4: Clique em OK. Ele deve restaurar com sucesso o banco de dados.

Nota: Quando você restaura um banco de dados WITH REPLACE, ele substitui o banco de dados antigo.

Alireza Abdollahnejad
fonte
Obrigado Alireza pelo seu esforço. Mas estamos usando a consulta em vez da GUI.
Pugal
5

O mesmo problema comigo. A solução para mim é:

  1. Clique com o botão direito do mouse no banco de dados.
  2. Selecione tarefas, selecione restaurar banco de dados.
  3. Clique nas opções no lado esquerdo.
  4. Marque a primeira opção Substituir o banco de dados existente (WITH REPLACE).
  5. Vá para Geral, selecione o banco de dados de origem e destino.
  6. Clique em OK, é isso
Aayush Verma
fonte
3

Eu só estava tentando resolver esse problema.

Eu tentei de tudo, desde executar como administrador até as sugestões encontradas aqui e em outros lugares; o que resolveu para mim no final foi verificar a opção "realocar arquivos" na guia de propriedades Arquivos.

Espero que isso ajude outra pessoa.

Clint
fonte
3

Eu tive que criar um novo banco de dados no meu local para testes e eu tive um backup do meu prod. Criei o banco de dados primeiro e tentei executar o BAK em cima do novo banco de dados que produziu esse erro para mim. Excluí o banco de dados e o restaurei enquanto procurava o novo nome de banco de dados na própria tela de restauração. O banco de dados foi criado automaticamente na restauração.

Angelina Ilieva
fonte
3

Alguns de vocês têm muito mais que isso complicado. Achei isso extremamente simples.

1) Crie um banco de dados com o mesmo nome que o nome do banco de dados do arquivo .bak!

2) clique com o botão direito do mouse no banco de dados | Tarefas> Restaurar> Banco de Dados

3) Em "Origem para restauração", selecione "Do dispositivo"

4) Selecione o arquivo .bak

5) Marque a caixa de seleção do banco de dados na grade abaixo

6) Em "Selecionar uma página" à direita, selecione "Opções"

7) Marque a caixa de seleção "Preservar as configurações de replicação (WITH KEEP_REPLICATION)

Agora volte para a página Geral e clique em OK para restaurar o banco de dados ... É isso.

Rolon
fonte
onde é que "selecione uma página"?
KansaiRobot
2

Concluí o trabalho de maneira alternativa, usando scripts Generate. Isso funcionou para mim, pois o Backup-Restore não ajudou a resolver o problema devido ao mesmo erro.

Altaf Patel
fonte
2

Nas opções, altere o nome do arquivo "Restaurar como" para o novo banco de dados mdf e ldf. Ele está referenciando os arquivos .mdf e .ldf do banco de dados de origem.

Priyanka Rawat
fonte
1

Você pode restaurar para um novo banco de dados, verificar a sintaxe do nome do arquivo, ele estará no arquivo de log, pois a nova versão do SQL será um sufixo "_log"

anúncio marque sobrescrever o sinalizador de banco de dados existente na guia opção

Fabio

Fabio
fonte
0

Tenho certeza de que esse problema está relacionado às permissões de arquivos e pastas.

Popas
fonte
0

Eu estava tentando restaurar um banco de dados de produção em um banco de dados temporário no mesmo servidor.

A única coisa que funcionou no meu caso foi restaurar para um novo banco de dados em branco. Isso funcionou muito bem, não tentou sobrescrever arquivos de produção (o que ocorreria se você apenas restaurasse o arquivo de backup de produção no banco de dados temporário existente). Em seguida, exclua o banco de dados antigo e renomeie - os arquivos manterão o novo nome temporário, mas, no meu caso, tudo bem.

(Ou então exclua o banco de dados temporário primeiro e, em seguida, você poderá restaurar para o novo banco de dados com o mesmo nome que o banco de dados temporário)

Mike Nelson
fonte
0

em vez de clicar em Restaurar banco de dados, clique em Restaurar arquivos e grupos de arquivos.

isso funciona no meu servidor sql

Ali Sadri
fonte
0

Isso me ajudou a importar o arquivo de backup da unidade do sistema

  1. Crie um banco de dados com o mesmo nome (de preferência) que o nome do banco de dados do arquivo .bak
  2. Clique com o botão direito do mouse no banco de dados> Tarefas> Restaurar> Banco de Dados
  3. Em "Origem para restauração", selecione "Do dispositivo"
  4. Selecione o arquivo .bak selecionando o caminho do sistema
  5. Marque a caixa de seleção do banco de dados na caixa de listagem abaixo
  6. Em "Selecionar uma página" à direita, selecione "Opções"
  7. Marque a caixa de seleção "Preservar as configurações de replicação (WITH KEEP_REPLICATION)
  8. Marque a caixa de seleção Substituir o banco de dados existente (COM SUBSTITUIR) Agora, volte para a página Geral e clique em OK para restaurar o banco de dados ...
Prajwal Bhat
fonte