Помилка 3154 під час відновлення резервної копії за допомогою "ЗАМЕНИТИ"


16

У мене на комп’ютері встановлений SQL 2012 з SP1. Я зробив резервну копію бази даних test.bak.

У мене є база даних з назвою, test2яка є тією ж базою даних, але дані змінилися.

Я хочу відновити test.bakчерез test2базу даних.

Я завжди отримую помилку:

Помилка 3154: Набір резервного копіювання містить резервну копію бази даних, відмінну від існуючої.

Я намагався:

  1. Я праворуч клацнув далі test2 -> Restore database -> From device

    Я вибрав test.bakі перевірив, With Replaceале я отримую помилку.

  2. Тоді я спробував натиснути правою кнопкою миші на test2 -> Restore file and filegroups

    Я вибрав test.bakі перевірив, With Replaceале я отримую помилку.

Я можу видалити свою стару базу даних, а потім відновити резервну копію з правильним іменем, але коли я використовував SQL 2008, у мене не було проблем із відновленням існуючої бази даних.

Здається, що оскільки я використовую SQL2012, я отримую цю помилку дуже багато!

Відповіді:


12

Вам слід користуватися WITH REPLACEі взагалі уникати використання речей "натискання і натискання" в студії управління - вони негнучкі і часто мають помилки.

Це працювало для мене:

USE [master];
GO

CREATE DATABASE test;
GO

CREATE DATABASE test2;
GO

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

RESTORE DATABASE test2
  FROM DISK = 'c:\temp\test.bak'
  WITH REPLACE,
  MOVE 'test' TO 'c:\temp\test2.mdf',
  MOVE 'test_log' TO 'c:\temp\test2.ldf';

Крім того, ви повинні переконатися, що ви WITH INITстворюєте резервну копію баз даних і використовуєте та / або не вказуєте пристрій на файл, який вже містить резервну копію (оскільки це може бути не та сама база даних, яку ви зараз створюєте, - особливо якщо ви повторно використовуєте імена, наприклад test...).


@AaronBertrand fyi, ця функція існує. Зазвичай я користуюся користувальницьким інтерфейсом та розписую його, щоб переконатися, що все добре. Там є багато помилок, так.
usr

2

1) Використовуйте WITH REPLACEпід час використання RESTOREкоманди.

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

Немає проблем із версією SQL Server. Як зазначав Аарон, я також в змозі відновити базу даних з 2008 по 2012 роки і також ті ж версії.


2

Ви відновлюєте неправильну базу даних. Не думайте про це як про "відновлення test2резервної копії з test", подумайте "відновити мою резервну копію, testале перейменуйте її як test2". Ви можете вибрати завдання відновлення testі помістити test2в поле "До бази даних:".

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


2

Ви все ще можете це зробити, але для цього потрібен додатковий крок.

Відкрийте діалогове вікно відновлення, зробіть звичні вибори за звичками 2008 року. Якщо оригінальною базою даних є БД, тоді вибрали пристрій DB.bak для Source та змініть ім'я призначення на DBTest. Потім під пунктом Вибір сторінки (лівий верхній кут) ви бачите Загальні / Файли / Параметри - виберіть Файли. Подивіться в сітку. Ви побачите стовпці для оригінального імені файлу та відновлення як імені файлу. Вручну розгорніть останнє і введіть нове ім'я (якщо оригінальне ім'я бази даних - це БД, і ви хочете створити DBTest, то змініть .... \ DB.mdf на ... \ DBTest.mdf тощо)

Це прийме ваш .bak файл для БД як джерело, а DBTest як призначення. Вам також може знадобитися перейти на сторінку «Параметри» та вибрати «Замінити». Мені потрібно з інших причин, тому я не можу перевірити це без цієї опції.


2

Правильна відповідь, як вказувалося, - використовувати WITH REPLACEваріант.

Я просто хочу зазначити, що ви можете отримати помилку у питанні навіть при використанні WITH REPLACE, якщо спробувати відновити з диференціальної резервної копії (без повної).


Напевно, у мене не було достатньо балів для коментарів під час цієї відповіді, я просто хотів зазначити, що ви можете отримати помилку навіть при використанні "З ЗАМІНЮ", якщо спробуєте відновити з диференціальної резервної копії (без повної)
Брімстедт

0

Сподіваюся, це спрацює.

  1. Після встановлення шляху до відновлення файлу.
  2. Натисніть "Параметри" зліва.
  3. Поставте прапорець "Закрити наявні з'єднання з базою даних".
  4. Натисніть кнопку ОК. введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.