2012-04-18 1 views
336

Я пытаюсь восстановить файл резервной копии SQL Server для моей базы данных, но это бросает ошибку следующим образом:Резервный набор выполняется резервное копирование базы данных, отличного от существующего

Набор резервного копирования занимает резервное копирование базы данных, кроме существующей

Моей базы данных в SQL Server 2008 и файл резервного копирования в 2005

Что может быть проблемой?

+35

Ответ проголосовавшего ниже - кувалда, чтобы взломать орех. Вероятно, проблема в том, что вы не выбрали опцию «* Перезаписать существующую базу данных (WITH REPLACE) *» в окне * Restore> Options *. У меня была эта проблема из командной строки с использованием 'WITH MOVE' и была исправлена ​​с помощью' WITH REPLACE, MOVE'. –

+0

У меня такая же ошибка с одной из моих баз данных, но только при отключении агента SQL Server. Если я включу его, нет ошибки, и я могу восстановить без проблем. Мой файл BAK содержит только одну базу данных, и это имя базы данных (и логические имена файлов) уникально на моем сервере. –

ответ

125

1) Используйте команду WITH REPLACE, используя команду RESTORE.

2) Delete старшая база данных, которая конфликтует и восстанавливается снова, используя команду RESTORE.

Для получения более подробной информации проверьте link.

+1

скопирован из ссылки и предоставил ссылку, а также .. * sigh * (smart) – Abhijeetchindhe

+4

@Abhijeetchindhe haha ​​.. Re-удобство и вежливость .. :) – Amarnath

+0

:) Честное программное обеспечение, вы! В любом случае, это лучший ответ для этого вопроса. И голосуйте за то, что вы его нашли, чтобы найти его :) – Abhijeetchindhe

8

Также важно удостовериться, что ваше имя базы данных соответствует имени базы данных в резервной копии, которую вы пытаетесь восстановить. Если он не совпадает, вы получите ту же ошибку.

+0

Это кажется особенно актуальным, если у вас есть несколько файлов/групп файлов и секционированных таблиц. – AlexC

595

Я тоже сталкивался с этой проблемой.

Решение:

  • Не создать пустую базу данных и восстановить файл .bak на него.
  • Используйте «Восстановить базу данных», доступный по правому щелчку по ветке «Базы данных» в SQL Server Management Studio и укажите имя базы данных, в то время как предоставляет источник для восстановления.
  • Также измените имена файлов в разделе «Файлы», если другая база данных все еще существует. В противном случае вы получите «Файл« ... »не может быть перезаписан. Он используется базой данных« yourFirstDb ».
+78

Для SSMS было бы так просто сказать мне об этом, когда возникла ошибка – cja

+14

+1 для легкого решения. –

+16

должен принять это как правильный ответ – mschr

1

Я просто пытался решить эту проблему.

Я пробовал все: от запуска до администратора до предложений, найденных здесь и в другом месте; то, что в конечном итоге решило это для меня, было проверить параметр «Переместить файлы» на вкладке «Свойства файлов».

Надеюсь, это поможет кому-то еще.

1

Мне пришлось создать новый db на моем локальном компьютере для тестирования & У меня была резервная копия из моего продукта. Сначала я создал db и попытался запустить BAK поверх нового db, который произвел эту ошибку для меня. Я удалил db и восстановил его при поиске нового имени db на самом экране восстановления. ДБ автоматически создается при восстановлении.

1

Я получил работу через альтернативный путь, используя Generate scripts. Это работало для меня, поскольку Backup-Restore не помог решить проблему из-за той же ошибки.

1

Некоторые из вас очень сильно усложняют это. Я нашел это очень простым.

1) Создайте базу данных с тем же именем, что и имя базы данных .bak.Важное замечание

2) щелкните правой кнопкой мыши базу данных | Задачи> Восстановление> База данных

3) Под "Источник для восстановления" выберите "Из Device"

4) Выберите .bak файл

5) установите флажок для базы данных в GridView ниже

6) в разделе «Выберите страницу» справа выберите «настройки»

7) установите флажок «сохранить настройки репликации (с KEEP_REPLICATION)

Теперь вернитесь на страницу «Общие» и нажмите «ОК», чтобы восстановить базу данных ... Вот и все.

70

Сначала создайте пустую базу данных с тем же именем. Затем перейдите к опции восстановления

Под Параметры на левой панели, не забудьте выбрать

  • Заменить существующую базу данных
  • сохранить настройки репликации

enter image description here

Именно так

5

Прежде чем делать что-либо еще, подтвердите, является ли ваша резервная копия полной или дифференциальной. Если вы пытаетесь создать новую базу данных из дифференциальной резервной копии, независимо от того, что вы делаете, вы столкнетесь с этой ошибкой.

+0

Это была проблема, которую я испытывал, поэтому спасибо за это !!! (я не знал, что резервный файл был фактически дифференциальной резервной копией.). Вот как проверить: «ВОССТАНОВИТЬ ГОЛОВКУ ОТ ДИСКА = 'C: \ myfile.bak'" В результатах BackupType 1 = Полная резервная копия. BackupType of 5 = Дифференциальное резервное копирование. –

0

Я уверен, что эта проблема связана с разрешениями на файлы и папки.

0

Вы можете восстановить к новой БД, проверьте синтаксис имени файла, то будет в логе-файле, для нового SQL версия будет быть «_log» суффиксом

объявления проверьте перезаписывает существующий флаг базы данных на вкладке опции

Фабио

10

Сво потому что .mdf и .ldf файлы из оригинального Db были найти в возможно c: \ programFile .... и эта информация сохраняется в резервном хранилище!

Если вы создаете одну и ту же БД на другом SQL-сервере, где установка находится на c: \ program Files (x86) \ .... вы не можете восстановить как обычно. Вам нужно переместить путь для файлов .mdf и .ldf.

Поэтому:

  • Создание пустой БД на новом сервере

  • правой кнопкой мыши на пустой Db> Задачи> Восстановление> База данных> cick Device выберите ваш.Бак Файлы> Выбрать Db для восстановления в

  • мышей на файлах на левой стороне> Выберите «Переместить все файлы в папку»
  • Параметров нажмите на левом сайте> нажмите на перезаписи

Готовы!
Надеюсь, это поможет!

13

Сегодня у меня возникла аналогичная проблема. Пробовал все вышеупомянутые решения, но не работал. Поэтому разместите мое решение здесь.

Не забудьте снимите Tail-долго резервное копирование перед восстановлением

Don't forget to uncheck Tail-long Backup before restore

Надеется, что это поможет другим тоже!

0

Я пытался восстановить производственную базу данных в промежуточную базу данных на том же сервере.

Единственное, что сработало в моем случае, - это восстановление новой пустой базы данных. Это отлично работало, не пыталось перезаписать производственные файлы (что было бы, если бы вы просто восстановили файл резервной копии в существующую промежуточную базу данных). Затем удалите старую базу данных и переименуйте - файлы сохранят новое имя temp, но в моем случае это нормально.

(Или в противном случае удалить промежуточную базу данных, а затем вы можете восстановить новую базу данных с таким же именем, как промежуточная база данных)

17
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'; 
+0

Это выглядит хорошо! – ADL

1

В Options измените «Восстановить как» имя файла в новую базу данных mdf и ldf. Он ссылается на файлы базы данных .mdf и .ldf.

39

ли перед той же проблемой и нашел решение, делая это, используя SSMS 2014

 
- Just select the Option Overwrite the existing database(WITH REPLACE) 

Existing Database> Task> Restore> Database

5

Если вы используете подход сценария и есть ошибка относительно СОЛ и MDF файлов, вы можете сначала запросить файл резервной копии для логических имен (и других деталей) файлов в резервном наборе, используя следующее:

-- 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 

Вы получите результаты похожи на следующее:

enter image description here

И тогда вы можете использовать эти логические имена в запросах:

-- 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.mdf'; -- "DB_log" is LDF logical name from query above 

Более подробную информацию о RESTORE FILELISTONLYcan be found from the SQL Server docs.

1

Тот же вопрос с решением me.The для меня:

  1. правой кнопкой мыши на базе данных.
  2. Выберите задачи, выберите базу данных восстановления.
  3. Параметры щелчка на левой стороне.
  4. Проверить первый вариант OverWrite существующей базы данных (WITH REPLACE).
  5. Перейдите в раздел Общие, выберите базу данных источника и назначения.
  6. Нажмите кнопку OK, это все
9

Простые 3 шага:

1 Щелкните правой кнопкой мыши на базе данных> Задачи> восстановление> База данных

2- Проверить устройство в качестве источника и выберите .bak файл

3- Нажмите на опции и проверить эти три галочками:

  1. check OverWrite существующая база данных.
  2. снимите резервный хвост журнал принять перед восстановлением
  3. Регулярно проверяйте близко существующего подключения к базе данных назначения.
  4. другие варианты действительно являются обязательными!
Смежные вопросы