在之前做的一个[学生晚归与考勤系统]里面,有这个功能,上网搜了一下很多相关的,然后根据自己的方法整理了一下(网上的太乱了),现在记录一下.
如上图,界面是这样子简单布局,2个button,一个fileupload控件.
数据库备份:双击数据备份的按钮生成Click事件,代码如下:
如上图,界面是这样子简单布局,2个button,一个fileupload控件.
//备份
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事件,代码如下:
双击数据还原的按钮生成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>");
}
}