Проблема
Необходимо скопировать и восстановить одну из БД на том же инстансе (экземпляре) SQL сервер.
У MSSQL все базы данных имеют логическое имя и обычно состоят из 2 файлов (файла данных и файла лога), имеющие следующие имена:
logicalName_Data.mdf
и
logicalName_Log.ldf
Иногда возникают ситуации когда необходимо "скопировать" БД на этот же инстанс SQL-сервера, но с новым логическим именем т.к., например, копируемая БД используется одним или несколькими приложениями.
Решение
Я не нашел как решить эту проблему в SQL Management Studio без операций по переименовыванию исходной БД (одно из условий: БД используется одним из приложений, поэтому ее трогать нельзя). Решение довольно простое, но для этого еужно написать TSQL-инструкцию.
1. Вывод списка файлов бэкапа:
RESTORE FILELISTSTONLY FROM DISK = 'E:\backups\mydb.bak'
в моем случае я получил mydb] для Data-файла и mydb]_log для файла логов
2. теперь скопируем имена файлов из выведенной таблицы в слебующую инструкцию:
RESTORE DATABASE myNewDb FROM DISK = 'E:\backups\mydb.bak'
WITH
RECOVERY,
MOVE 'mydb]' TO 'E:\db\data\myNewDb.mdf',
MOVE 'mydb]_log' TO 'E:\db\logs\myNewDb.ldf';
База восстановлена с новым именем myNewDb.
Необходимо скопировать и восстановить одну из БД на том же инстансе (экземпляре) SQL сервер.
У MSSQL все базы данных имеют логическое имя и обычно состоят из 2 файлов (файла данных и файла лога), имеющие следующие имена:
logicalName_Data.mdf
и
logicalName_Log.ldf
Иногда возникают ситуации когда необходимо "скопировать" БД на этот же инстанс SQL-сервера, но с новым логическим именем т.к., например, копируемая БД используется одним или несколькими приложениями.
Решение
Я не нашел как решить эту проблему в SQL Management Studio без операций по переименовыванию исходной БД (одно из условий: БД используется одним из приложений, поэтому ее трогать нельзя). Решение довольно простое, но для этого еужно написать TSQL-инструкцию.
1. Вывод списка файлов бэкапа:
RESTORE FILELISTSTONLY FROM DISK = 'E:\backups\mydb.bak'
в моем случае я получил mydb] для Data-файла и mydb]_log для файла логов
2. теперь скопируем имена файлов из выведенной таблицы в слебующую инструкцию:
RESTORE DATABASE myNewDb FROM DISK = 'E:\backups\mydb.bak'
WITH
RECOVERY,
MOVE 'mydb]' TO 'E:\db\data\myNewDb.mdf',
MOVE 'mydb]_log' TO 'E:\db\logs\myNewDb.ldf';
База восстановлена с новым именем myNewDb.