Импорт резервной копии базы данных (файл .bak) в другую базу данных

Я использую сервер Microsoft SQL. У меня есть база данных, которую мы можем назвать database1, и ее резервная копия в формате .bak. Мне нужно восстановить резервную копию в другой пустой базе данных, которую мы можем назвать database_temp, поэтому обе базы данных должны существовать. Мне нужно получить и подтвердить некоторые данные из архива database_temp, а затем удалить их, когда я закончу свою работу.

что я сделал:

1) создал новую базу данных "database_blank"

2) задачи - восстановить базу. В источнике я выбираю «устройство», а затем мой файл .bak, в месте назначения я выбираю database_temp.

3) в опции я выбираю перезаписать существующую базу данных с заменой.

Я получил ошибку "Восстановление базы данных не удалось, файл не может быть перезаписан, он используется базой данных database1"


person Dan_Hero    schedule 28.11.2019    source источник
comment
убить все соединения (спиды)   -  person Doug Coats    schedule 28.11.2019
comment
Проблема @DougCoats не в соединениях, а в файлах. Dan_Hero, когда вы восстанавливаете базу данных, она по умолчанию использует имена файлов, которые были в исходной базе данных, а не те, которые вы перезаписываете. вам нужно изменить имена файлов в панели файлов, чтобы они были именами базы данных Database_Temp. Я *предполагаю, что это будут Database_temp.mdb и Database_Temp_log.ldf для файлов данных и строк соответственно, но вам нужно проверить.   -  person Larnu    schedule 28.11.2019
comment
Возможно, дубликат этой темы https://serverfault.com/questions/244665/mdf-file-cannot-be-overwrite-when-restoring-a-database-in-sql-server/916032   -  person vincent PHILIPPE    schedule 28.11.2019


Ответы (1)


Вы должны переместить файлы базы данных.

e.g.

RESTORE DATABASE [AdventureWorks] FROM DISK = 'c:\backup\Adv.bak'
WITH CHECKSUM,
MOVE 'AdventureWorks_Data' TO 'c:\mssql\data\AdventureWorksCopy_Data.mdf',
MOVE 'AdventureWorks_Log' TO 'c:\mssql\log\AdventureWorksCopy_Log.ldf',
RECOVERY, REPLACE, STATS = 10;

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

Полный документированный синтаксис можно найти здесь

person Peter Schneider    schedule 28.11.2019