Как создать резервную копию и восстановить базу данных в виде копии на том же сервере?

У меня есть база данных SQL2005 Express, которую я хотел бы создать в одном экземпляре. Как вы это делаете с помощью script?

У меня уже есть script для создания резервной копии, но восстановление не работает...

ОШИБКА:

Msg 3234, уровень 16, состояние 2, строка 2 Логический файл 'MyDB_data' не является частью базы данных "MyDB_Test". Использовать ВОССТАНОВЛЕНИЕ FILELISTONLY для отображения логического файла имена.
Msg 3013, уровень 16, состояние 1, Строка 2 БАЗА ДАННЫХ RESTORE прекращается ненормально.

РЕШЕНИЕ:

RESTORE DATABASE [MyDB_Test]
FROM DISK = 'C:\temp\SQL\MyDB.bak'
WITH
MOVE 'MyDB' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDB_Test.mdf'
, MOVE 'MyDB_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDB_Test_log.ldf'
, REPLACE;

ПРИЧИНА:
Я не идентифицировал логический путь правильно в моей первой попытке.

Ответ 1

RESTORE FILELISTONLY является информационной командой и не требуется выполнять восстановление. Пользователь может использовать это, чтобы выяснить, какие логические имена для файлов данных, которые могут использоваться с командами MOVE для восстановления базы данных в новом месте.

Как указано в сообщении об ошибке, вам нужно использовать RESTORE FILELISTONLY, чтобы узнать, что такое логические имена для базы данных. У вашей команды восстановления есть эти ошибки.

Вот рабочий пример того, что вам нужно сделать:

--backup the database
backup database test1 to disk='c:\test1_full.bak'

-- use the filelistonly command to work out  what the logical names 
-- are to use in the MOVE commands.  the logical name needs to
-- stay the same, the physical name can change
restore filelistonly from disk='c:\test1_full.bak'
 --------------------------------------------------
|  LogicalName  |           PhysicalName           |
 --------------------------------------------------
| test1         | C:\mssql\data\test1.mdf          |
| test1_log     | C:\mssql\data\test1_log.ldf      |
 -------------------------------------------------

restore database test2 from disk='c:\test1_full.bak'
with move 'test1' to 'C:\mssql\data\test2.mdf',
move 'test1_log' to 'C:\mssql\data\test2.ldf'

Ответ 3

Вот несколько альтернатив:

Программное обеспечение для восстановления базы данных (из .BAK)::

1) SqlRestoreSetup

2) Apex SQL Restore