Восстановить базу данных из резервной копии в 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);
Другие вопросы по тегам