Восстановить базу данных из резервной копии в asp mvc
Я новичок в asp mvc, и я пытаюсь сделать действия, которые делают резервную копию базы данных и восстановить ее из файла резервной копии
здесь код
public class BackupController : Controller
{
private RemasEntities1 db = new RemasEntities1();
// GET: Backup
public ActionResult BackupDatabase()
{
string dbPath = Server.MapPath("~/App_Data/DBBackup.bak");
using (var db = new RemasEntities1())
{
var cmd = String.Format("BACKUP DATABASE {0} TO DISK='{1}' WITH FORMAT, MEDIANAME='DbBackups', MEDIADESCRIPTION='Media set for {0} database';"
, "Remas", dbPath);
db.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, cmd);
}
return new FilePathResult(dbPath, "application/octet-stream");
}
public ActionResult RestoreDatabase()
{
string dbPath = Server.MapPath("~/App_Data/DBBackup.bak");
using (var db = new RemasEntities1())
{
var cmd = String.Format("restore DATABASE {0} from DISK='{1}';"
, "Remas", dbPath);
db.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, cmd);
}
return View();
}
}
действие резервного копирования работает хорошо, но когда я пытаюсь восстановить базу данных из действия восстановления, выдается исключение
Исключение типа sql.data.sqlexception'произошло в entityframework.sqlserver.dll, но не было обработано в коде пользователя
Restore не может обработать базу данных 'Remas', так как она используется этим сеансом. Рекомендуется использовать базу данных master при выполнении этой операции.
1 ответ
Решение
Попробуйте использовать master
:
var cmd = String.Format("USE master restore DATABASE Remas from DISK='{0}' WITH REPLACE;", dbPath);