Набір резервних копій містить резервну копію бази даних, відмінну від існуючої


485

Я намагаюся відновити файл резервної копії SQL Server для моєї бази даних, але він видає помилку наступним чином:

Набір резервних копій містить резервну копію бази даних, відмінну від існуючої

Моя база даних у SQL Server 2008, а файл резервного копіювання - у 2005 році.

У чому може бути проблема?


95
Відповідь, що голосує нижче, - кувалда для розламування горіха. Проблема, швидше за все, ви не вибрали опцію " Перезаписати існуючу базу даних (З ЗАМІНЬОЮ") у вікні Відновити> Параметри . У мене виникла ця проблема через використання командного рядка WITH MOVE, і вона була виправлена ​​за допомогою WITH REPLACE, MOVE.
Джеймс Маккормак

У мене однакова помилка в одній із моїх баз даних, але лише тоді, коли агент SQL Server вимкнено. Якщо я його ввімкнув, помилки немає, і я можу відновити без проблем. Мій файл BAK містить лише одну базу даних, і це ім'я бази даних (та логічні назви файлів) є унікальними на моєму сервері.
Веб-розробник

Відповіді:


807

Я теж натрапив на це питання.

Рішення:

  • Не створюйте порожню базу даних і не відновлюйте .bakфайл у ній.
  • Використовуйте опцію "Відновити базу даних" , натиснувши правою кнопкою миші гілку "Бази даних" Студії управління SQL Server і введіть ім'я бази даних, надаючи джерело для відновлення.
  • Також змініть назви файлів у "Файлах", якщо інша база даних все ще існує. Інакше ви отримаєте "Файл" ... "неможливо перезаписати. Він використовується в базі даних" yourFirstDb "".

102
SSMS

16
+1 для " Не створюйте порожню базу даних і не відновлюйте файл .bak на ній " ... так, це вирішує її. (Але чому я не отримав цю проблему всі інші випадки, коли я робив те саме? І чи ми не почали робити це попередньо, перш за все, як вирішення якогось іншого незрозумілого повідомлення про помилку?]])
Редагування

Хтось повинен відзначити це як відповідь, оскільки це була порада, яка мені потрібна для успішного відновлення резервної копії.
Дорін

2
У програмі «Відновити базу даних» я зайшов у «Файли», «Відновити як» та ввів унікальні назви файлів, оскільки досі були оригінальні назви файлів даних та журналів.
Дейв Матір

2
Також змініть назви файлів у "Файлах", якщо інша база даних все ще існує. Інакше ви отримаєте "Файл" ... "неможливо перезаписати. Він використовується в базі даних" yourFirstDb "".
Верена Хауншмід

175

Або:

1) Використовуйте WITH REPLACEпід час використання RESTOREкоманди (якщо використовується графічний інтерфейс, він знаходиться в розділі Опції -> Перезаписати існуючу базу даних ( WITH REPLACE)).

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

Перевірте посилання для отримання більш детальної інформації.


1
скопійовано із посилання та надано також посилання .. * зітхання * (розумне)
Abhijeetchindhe

4
@Abhijeetchindhe haha ​​.. Повторне використання та ввічливість .. :)
Amarnath

:) Чесний програмний продукт Е! Ви все одно, це найкраща відповідь на це питання. І голосуйте за час, який ви вибрали, щоб знайти його :)
Abhijeetchindhe

1
Якщо було те саме, що і op, і ця відповідь спрацює чудово. +1
Естебан

1
Цей варіант із ЗАМЕНОЮ також був потрібним мені рішенням. Дякую!
Адам

90

Спочатку створіть порожню базу даних з тим же ім’ям. Потім перейдіть до опції відновлення

У розділі Опції на лівій панелі не забудьте вибрати

  • Перезапишіть існуючу базу даних
  • Збережіть параметри реплікації

введіть тут опис зображення

Це воно


51

Зіткнувшись з тією ж проблемою і знайшли рішення, роблячи це, використовуючи SSMS 2014

- Просто виберіть опцію Перезаписати наявну базу даних (З ЗАМІНЮ) 

Існуюча база даних> Завдання> Відновити> База даних


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

33

Прості 3 кроки:

1- Клацніть правою кнопкою миші на базі даних → Завдання → відновити → База даних

2- Перевірте Deviceяк джерело та знайдіть .bak (або блискавку .bak) файл

3- На лівій панелі натисніть optionsта:

  • перевірити Перезаписати існуючу базу даних.
  • зніміть прапорець Візьміть резервну копію хвостового журналу перед відновленням
  • перевірити Закрити існуюче з'єднання з базою даних.

Інші варіанти дійсно необов’язкові (і важливо, звичайно)!


23

Його , бо .mdfі .ldfфайли від оригіналу Dbбули знайти на , можливо , c:\programFile\....і ця інформація зберігається в резервному сховище!

Якщо ви створили ту саму БД на іншому SQL сервері, де встановлена ​​установка, c:\program Files (x86)\ ....ви не можете відновити, як зазвичай. Вам потрібно перенести шлях до файлів .mdfта .ldfфайлів.

Тому:

  • Створіть порожній БД на новому сервері

  • Клацніть правою кнопкою миші порожній Db> Завдання> Відновити> База даних> Клацніть Пристрій, виберіть .bakфайли> Виберіть Db для відновлення

  • натисніть на "Файли зліва"> Виберіть "Перемістити всі файли в папку"
  • натисніть Опції ліворуч на сайті> Клацніть Перезаписати

Готово!
Сподіваюся, це допомагає!


16

Я сьогодні зіткнувся з подібною проблемою. Випробували всі вищезазначені рішення, але не вийшло. Тож розміщую моє рішення тут.

Не забувайте знімати прапорець Резервне копіювання довгих хвостів перед відновленням

Не забувайте знімати прапорець Резервне копіювання довгих хвостів перед відновленням

Сподіваюся, це допоможе і іншим!


Це те, що працювало для мене. Дякую!
Білл Норман

16

Якщо ви використовуєте підхід до сценарію і маєте помилку стосовно файлів LDF та 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

Ви отримаєте результати, подібні до таких:

введіть тут опис зображення

І тоді ви можете використовувати ці логічні імена у запитах:

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

Більше інформації RESTORE FILELISTONLY можна знайти в документах SQL Server .


У мене було те саме питання у питанні, і в моєму випадку резервна копія Db була з віддаленого сервера, і мені довелося створити ту саму структуру папок на своєму D-диску, що нагадує вихід першого запиту. Тоді другий запит спрацював правильно і база даних була відновлена.
rinilnath

11

Також важливо переконатися, що ім’я вашої бази даних відповідає імені бази даних у резервній копії, яку ви намагаєтесь відновити. Якщо вона не збігається, ви отримаєте ту ж помилку.


Це, мабуть, особливо вірно, якщо у вас є кілька файлів / груп файлів та розділені таблиці
AlexC

9

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


1
Це питання, яке я відчував, тому дякую за це !!! (Я не знав, що файл резервної копії насправді є диференційованою резервною копією.) Ось як перевірити: "ВІДКЛЮЧИТИ ВІДГОТОВЛЕНО З ДИСКА =" C: \ myfile.bak "" У результатах BackupType 1 = Повна резервна копія. Тип резервного копіювання 5 = диференціальне резервне копіювання.
Wimpie Ratte

9

system.data.sqlclient.sqlerror: Набір резервних копій містить резервну копію бази даних, відмінну від існуючої бази даних "Dbname"

Я натрапив на пошуки душі

  1. Не створюйте базу даних з тим самим іменем або іншим ім'ям бази даних! Важливо.

  2. клацніть правою кнопкою миші на базі даних | Завдання> Відновити> База даних

  3. У розділі "Джерело для відновлення" виберіть "З пристрою"

  4. Виберіть .bak файл

  5. Установіть прапорець для бази даних у сітковому перегляді нижче

  6. Для бази даних: "Тут ви можете ввести ім'я нової бази даних" (напр .: DemoDB)

  7. Не вибирайте існуючу базу даних із списку DropDown

  8. Тепер натисніть кнопку ОК, це створить нову Databse і відновить усі дані з вашого .bak-файлу.

Ви можете отримати допомогу навіть за цим посиланням

Сподіваємось, це допоможе розібратися у вашій проблемі ...


1
"Не створюйте базу даних з тим самим іменем або іншим ім'ям бази даних! Важливо." Що ви маєте на увазі?
sajid

6

Це завжди викликано несумісністю версії. виконайте наступні кроки, щоб вирішити:

Крок 1. Створіть базу даних із бажаним іменем. (У нашому випадку AdventureWorks)

Крок 2: Напишіть натисніть на базу даних і натисніть Завдання >> Відновити >> База даних…

введіть тут опис зображення

Крок 3: На екрані відновлення перейдіть до третього вибору параметрів. Тепер встановіть прапорець "Перезаписати існуючу базу даних (З ЗАМІНЬОЮ")

введіть тут опис зображення

Крок 4: натисніть кнопку ОК. Він повинен успішно відновити базу даних.

Примітка. Коли ви відновите базу даних із ЗАМІНЮ, вона замінить стару базу даних.


Дякую Алірезі за ваші зусилля. Але ми використовуємо запит замість GUI.
Пугал

5

Те саме питання зі мною. Рішення для мене таке:

  1. Клацніть правою кнопкою миші на базі даних.
  2. Виберіть завдання, виберіть відновити базу даних.
  3. Клацніть параметри ліворуч.
  4. Перевірте перший варіант OverWrite існуючу базу даних (З ЗАМІНЮ).
  5. Перейдіть до Загального, виберіть джерело та цільову базу даних.
  6. Натисніть ОК, ось і все

3

Я просто намагався вирішити це питання.

Я б спробував усе - від запуску адміністратора до пропозицій, знайдених тут і деінде; що вирішило це для мене врешті-решт, було перевірити параметр "переїхати файли" на вкладці "Файли".

Сподіваємось, це допомагає комусь іншому.


3

Мені довелося створити новий db на локальному для тестування, і у мене з'явилася резервна копія від мого продукту. Я створив db першим і спробував запустити BAK поверх нового db, який створив для мене цю помилку. Я видалив db і відновив його під час пошуку нового імені db на самому екрані відновлення. Db було автоматично створено при відновленні.


3

Деякі з вас дуже сильно ускладнюють це. Я вважав це надзвичайно простим.

1) Створіть базу даних з тим самим іменем, що і ім’я бази даних .bak! Важливо!

2) клацніть правою кнопкою миші на базі даних | Завдання> Відновити> База даних

3) У розділі "Джерело для відновлення" виберіть "З пристрою"

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

5) Установіть прапорець для бази даних у таблиці перегляду нижче

6) Під "Вибір сторінки" праворуч Виберіть "Параметри"

7) Установіть прапорець "Зберегти параметри реплікації (З KEEP_REPLICATION)"

Тепер поверніться на сторінку Загальні та натисніть кнопку ОК, щоб відновити базу даних ... Це все.


де це "вибрати сторінку"?
KansaiRobot

2

Я працював альтернативним способом, використовуючи Створення сценаріїв. Це працювало для мене, оскільки Backup-Restore не допомогло вирішити проблему через ту ж помилку.


2

У Параметрах змініть ім'я файлу «Відновити як» на нову базу даних mdf та ldf. Це посилання на вихідну базу даних .mdf та .ldf файли.


1

Ви можете відновити до нової БД, перевірити синтаксис імені файлу, він буде у файлі журналу, для нової версії SQL буде суфікс "_log"

оголошення перевірте перезапис існуючого прапора бази даних на вкладці параметрів

Фабіо


0

Я впевнений, що ця проблема пов'язана з дозволами на файли та папки.


0

Я намагався відновити виробничу базу даних до інсценізаційної бази даних на тому ж сервері.

Єдине, що працювало в моєму випадку - це відновлення нової порожньої бази даних. Це спрацювало чудово, не намагалися перезаписати виробничі файли (що було б, якщо просто відновити виробничий файл резервної копії до існуючої бази даних постановки). Потім видаліть стару базу даних та перейменуйте - файли збережуть нову назву temp, але в моєму випадку це нормально.

(Або іншим способом видаліть базу даних інсценізації спочатку, а потім ви можете відновити нову базу даних з тим самим іменем, що і базу даних.


0

замість того, щоб натиснути на Відновити базу даних, натисніть на Відновити файл та групи файлів ..

це працює на моєму сервері sql


0

Це допомогло мені імпортувати резервний файл із системного диска

  1. Створіть базу даних з тим самим іменем (бажано), як ваше ім'я бази даних .bak
  2. Клацніть правою кнопкою миші базу даних> Завдання> Відновити> База даних
  3. У розділі "Джерело для відновлення" виберіть "З пристрою"
  4. Виберіть .bak файл, вибравши шлях із системи
  5. Установіть прапорець для бази даних у списку нижче
  6. У розділі "Вибір сторінки" праворуч Виберіть "Параметри"
  7. Установіть прапорець "Зберегти параметри реплікації (З KEEP_REPLICATION)"
  8. Установіть прапорець Перезаписати існуючу базу даних (З ЗАМІНЮ) Тепер поверніться на сторінку Загальні та натисніть кнопку ОК, щоб відновити базу даних ...
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.