Если вы используете подход сценария и есть ошибка относительно СОЛ и 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.mdf'; -- "DB_log" is LDF logical name from query above
Более подробную информацию о RESTORE FILELISTONLY
can be found from the SQL Server docs.
Ответ проголосовавшего ниже - кувалда, чтобы взломать орех. Вероятно, проблема в том, что вы не выбрали опцию «* Перезаписать существующую базу данных (WITH REPLACE) *» в окне * Restore> Options *. У меня была эта проблема из командной строки с использованием 'WITH MOVE' и была исправлена с помощью' WITH REPLACE, MOVE'. –
У меня такая же ошибка с одной из моих баз данных, но только при отключении агента SQL Server. Если я включу его, нет ошибки, и я могу восстановить без проблем. Мой файл BAK содержит только одну базу данных, и это имя базы данных (и логические имена файлов) уникально на моем сервере. –