【问题标题】:Restore database from backup in asp mvc从 asp mvc 中的备份还原数据库
【发布时间】:2015-06-03 12:22:00
【问题描述】:

我是 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();
    }
}

备份操作效果很好,但是当我尝试从恢复操作中恢复数据库时,它会抛出异常

entityframework.sqlserver.dll 中出现 sql.data.sqlexception' 类型的异常,但未在用户代码中处理

Restore 无法处理数据库“Remas”,因为该会话正在使用它。建议执行此操作时使用master数据库

【问题讨论】:

  • 听起来您连接到Remas 数据库是为了恢复该数据库,而不是Master

标签: sql-server asp.net-mvc database-restore


【解决方案1】:

尝试使用master

var cmd = String.Format("USE master restore DATABASE Remas from DISK='{0}' WITH REPLACE;", dbPath);

【讨论】:

  • 它显示错误 System.Data.SqlClient.SqlException 未被用户代码处理 HResult=-2146232060 消息=数据库“Remas”的日志尾部尚未备份。如果日志包含您不想丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份日志。使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来覆盖日志的内容。
  • @Sarah_Ayyad 查看编辑 - 您需要使用 WITH REPLACE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多