asp.net备份还原sql数据库

来源:互联网 发布:工作证在线生成软件 编辑:程序博客网 时间:2024/05/22 06:15
在之前做的一个[学生晚归与考勤系统]里面,有这个功能,上网搜了一下很多相关的,然后根据自己的方法整理了一下(网上的太乱了),现在记录一下.
如上图,界面是这样子简单布局,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>");    }}


0 0
原创粉丝点击