客户端备份和还原数据库(Asp.NET)

数据库备份和还原,在项目开发中很多客户都需要的功能。他们希望,点击备份按钮时,就可以把备份的数据库下载到本地保存。点击还原按钮时,把本地的数据库还原到服务器上。

虽然这样很不安全,但是在局域网内也是很有必要的。

这里运用到了几个知识点。

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文件属性设置为可读写。

下面是我的截图。

 

 

 

 

 

 

 

 

 

 

posted @ 2009-12-04 09:42  yoolo wu  阅读(1100)  评论(0编辑  收藏  举报