asp.net备份还原sql数据库

在之前做的一个[学生晚归与考勤系统]里面,有这个功能,上网搜了一下很多相关的,然后根据自己的方法整理了一下(网上的太乱了),现在记录一下.
如上图,界面是这样子简单布局,2个button,一个fileupload控件.
数据库备份:双击数据备份的按钮生成Click事件,代码如下:
//备份
protected void btnBf_Click(object sender, EventArgs e)
{
    //给备份数据库根据时间来命名
    string newname = "Attendance" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + ".bak";
    string path = Server.MapPath("DataBack/") + newname;//备份的地址
    string dbname = Server.MapPath("App_Data/Attendance.Mdf");//原来的数据库地址,通常放在App_Data文件夹里面
    string strsql = "backup database \"" + dbname + "\" to disk='" + path + "'"; //备份的sql语句
    SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["sql"]);//连接sql的语句写在web.config里面了.
    con.Open();//打开连接
    try
    {
        SqlCommand com = new SqlCommand(strsql, con);//创建命令
        com.ExecuteNonQuery();//执行
        ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('备份数据成功!')</script>");
        Response.AddHeader("refresh", "0");
    }
    catch (Exception error)
    {
        Response.Write(error.Message);
        ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('备份数据失败!')</script>");
        Response.AddHeader("refresh", "0");
    }
    finally
    {
        con.Close();
    }
}

备份就好了,通常有错误都是找不到原来的数据库而已,只要把地址写正确就好了.
===========================================================================
数据库还原:
双击数据还原的按钮生成Click事件,代码如下:
//还原
protected void btnHy_Click(object sender, EventArgs e)
{
    if (FileUpload1.FileName != "")
    {
    	//获得备份路径及数据库名称
    	string path = Server.MapPath("DataBack/" + FileUpload1.FileName);
    	//sql语句,先使用master数据库,然后脱机原来的数据库,然后再还原即可.
    	string dbname = Server.MapPath("App_Data/Attendance.Mdf");
    	string strsql = "use master;alter database \"" + dbname + "\" set offline with ROLLBACK IMMEDIATE;restore database \"" + dbname + "\" from disk='" + path + "' WITH REPLACE";
    	SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["sql"]);
    	con.Open();
    	try
    	{
            SqlCommand com = new SqlCommand(strsql, con);com.ExecuteNonQuery();
            ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('还原数据成功,请重新登录!');location.href='Logout.aspx'</script>");
            Response.AddHeader("refresh", "0"); 
        }catch (Exception error) {
            Response.Write("<script language=javascript>alert('还原数据失败!" + error.Message + "')</script>");
        }
        finally
        {
            con.Close();
        }
    }
    else
    {
        ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('请选择要还原的数据库!')</script>");
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值