Створення нової бази даних із резервної копії іншої бази даних на тому ж сервері?


75

Я намагаюся створити нову базу даних із старої резервної копії бази даних на тому ж сервері. Коли я використовую студію управління сервером SQL і намагаюся відновити нову БД із резервної копії, я отримую цю помилку

System.Data.SqlClient.SqlError: The backup set holds a backup of a database 
other than the existing 'test' database. (Microsoft.SqlServer.Smo)

погугливши, я знайшов цей фрагмент коду

    RESTORE DATABASE myDB

 FROM DISK = 'C:\myDB.bak'

 WITH MOVE 'myDB_Data' TO 'C:\DATA\myDB.mdf',

MOVE 'myDB_Log' TO 'C:\DATA\myDB_log.mdf'
GO

Мені цікаво, чи будуть оператори переміщення зіпсувати базу даних, з якої надходила резервна копія на цьому сервері?

Дякую, вся допомога оцінена.


Запропонуйте спробувати: dba.stackexchange.com
JohnFx

ні, відновлення не впливає на їх початкове вихідне значення db (якщо тільки ви не відновлюєте його)
simon coleman

Відповіді:


129

Я думаю, що це простіше, ніж це.

  • Спочатку створіть пусту цільову базу даних.
  • Потім у майстрі відновлення "SQL Server Management Studio" знайдіть можливість перезаписати цільову базу даних. Він знаходиться на вкладці "Параметри" і називається "Перезаписати існуючу базу даних (З ЗАМІНОЮ)" . Перевір це.
  • Не забудьте вибрати цільові файли на сторінці «Файли».

Ви можете змінити "вкладки" в лівій частині майстра (Загальне, Файли, Параметри)


2
Щиро дякую, я раніше намагався скористатися опцією з Замінити в Management Studio, але не виконував частину файлів. Зробив те, що ти запропонував, і база даних зараз створюється.
Маховик

Я зіткнувся з цією проблемою при спробі вирішення вище -> «Резервний набір виконується резервне копіювання бази даних, крім існуючого» , що працювало блискуче для мене було знайдено рішення тут: stackoverflow.com/questions/10204480 / ...
user7023213

73

Можна навіть відновити, не створюючи порожню базу даних взагалі.

У Sql Server Management Studio клацніть правою кнопкою миші Бази даних і виберіть Відновити базу даних ... введіть тут опис зображення

У діалоговому вікні Відновити базу даних виберіть джерело бази даних як зазвичай, або пристрій. Після вибору вихідної бази даних SSMS заповнить ім'я цільової бази даних на основі вихідного імені бази даних.

Тоді можна змінити назву бази даних і ввести нову назву бази даних .

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

При такому підході вам навіть не потрібно переходити на вкладку Параметри та натискати опцію "Перезаписати існуючу базу даних".

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


3
Це один з найкращих варіантів!
user2040021

4
Я би хотів, щоб я проголосував за це ще не раз! Це насправді відповідь, яку я шукав, а не підхід до обхідних шляхів, описаний у більш схвалених відповідях!
Требор,

3
Це рішення працювало для мене, але лише якщо я спеціально змінив імена файлів "Відновити як" на вкладці "Файли" на те, що ще не існувало. В іншому випадку я отримую повідомлення про помилку відновлення "файли вже використовуються, неможливо перезаписати".
Джеремі

1
Це найкраще рішення. Як зазначає @Jeremy, відповідь не згадує про необхідність заміни шляхів "Відновити як", які були б необхідними. нові шляхи до бази даних повинні бути встановлені там перед відновленням.
Педро Фонсека

1
Це спрацювало і на мене! :) Мені довелося відключити, Take tail-log backup before restoreоскільки я отримав помилку, як описано тут stackoverflow.com/a/29497004/5588197
Jan Paolo Go


1

Думайте про це як про архів. MyDB.Bak містить MyDB.mdf та MyDB.ldf.

Відновіть за допомогою Move, щоб сказати, що HerDB в основному захоплює MyDB.mdf (та ldf) із резервної копії та копіює їх як HerDB.mdf та ldf.

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

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