数据库备份和还原,在项目开发中很多客户都需要的功能。他们希望,点击备份按钮时,就可以把备份的数据库下载到本地保存。点击还原按钮时,把本地的数据库还原到服务器上。
虽然这样很不安全,但是在局域网内也是很有必要的。
这里运用到了几个知识点。
1:数据库备份,和还原(这里指Sql server)
2:文件的上传和下载。(为什么要用到文件上传和下载呢?这里有个很值得注意的问题,而且我在做项目时也经常会疏忽。我们在测试数据库备份和还原时,都是在本地进行的。也就是说,我们的电脑既做了客户端,又做了服务器。所以不管你怎么测试,只要代码没有写错就会成功的。一旦你在服务器上发布之后,再调试时就会出现,数据库备份在了服务器上,而且数据库还原也会失败。所以,这个时候你需要把数据库下载到本地保存,还原时把数据上传到服务器上,利用sql读取服务器上的路径执行还原操作。)
下面是我的代码。我把备份和还原封装在一个类里
public class OutData
{
/// <summary> /// 备份数据库
///XianNingDSH 是我测试的数据库名 /// </summary> public static int backData(string name) {
string sqlStr = "use XianNingDSH; backup database XianNingDSH to disk='" + name+"'"; return ExecuteSql(sqlStr);
} /// <summary> ///还原数据库 /// </summary> public static int reBackData(string name) {
string sqlStr = "use master;restore database XianNingDSH from disk='" + name + "'"; return ExecuteSql(sqlStr); }
}
在前台:
protected void Button1_Click(object sender, EventArgs e) { //备份数据库
//随机生成备份数据库名 string filename = HttpUtility.UrlDecode(Request.Cookies["username"].Value) + DateTime.Now.Ticks.ToString() + "数据库备份.bak";
try { OutData(Server.MapPath("..") + "//UploadFile//" + filename); addNote(filename); //把备份的数据完全路径保存到XML文件里 Jscript.AlertAndRedirect("备份数据成功!", "ImportData.aspx");
} catch (Exception me) { Jscript.Alert(me.Message); } } protected void Button2_Click(object sender, EventArgs e) { //还原数据库
string dric = Server.MapPath("..") + "//UploadFile//" + FileUpload1.FileName; FileUpload1.SaveAs(dric); //上传还原数据库到服务器上 try { OutData(dric); Jscript.AlertAndRedirect("还原数据库成功!", "ImportData.aspx"); } catch { Jscript.AlertAndRedirect("还原数据库失败!", "ImportData.aspx"); } }
在处理下载服务器上的数据库文件时,不是以文件流的形式输出到本地的方式。而是把保存的数据库文件路径保存到xml文件里(dataConfig.xml)。
<?xml version="1.0" encoding="utf-8"?><dataconfig> <data> <time>备份时间</time> <uname>备份人</uname> <url>下载</url> </data> <data> <time>2009-11-5 14:43:34</time> <uname>admin</uname> <url>admin633930290128125000备份.bak</url> </data> <data> <time>2009-11-5 14:46:59</time> <uname>admin</uname> <url>admin633930292183593750备份.bak</url> </data></dataconfig>
所以这里还需要用到对xml的文件的处理。我将在下篇博客里讲述关于对Xml文件的增删改查功能。
还要点要注意的时,如果我们是用VSS管理我们的项目时,需要对操作的xml文件属性设置为可读写。
下面是我的截图。
转载于:https://www.cnblogs.com/yoolonet/archive/2009/12/04/1616702.html