当前位置:编程学习 > C#/ASP.NET >>

ASP.NET备份数据库

ASP.NET响应用户的请求(例如:点击备份按钮)在后台启动备份数据库的操作并立即返回,用户在前台通过AJAX可以得到备份成功或者失败的消息。
该如何设计和实现这样的功能呢?望高手解答 asp.net --------------------编程问答-------------------- http://www.cnblogs.com/jinzhao/archive/2009/10/09/1579473.html
ajax调用成功,返回成功信息,前台判断返回信息给出相应的提示 --------------------编程问答--------------------
引用 1 楼 gxingmin 的回复:
http://www.cnblogs.com/jinzhao/archive/2009/10/09/1579473.html
ajax调用成功,返回成功信息,前台判断返回信息给出相应的提示

如何在ASP.NET后台启动备份操作然后立即返回,并且为后续的AJAX调用提供备份是否完成的数据呢? --------------------编程问答-------------------- 为什么要点击就立即返回呢?等返回备份是否成功在返回不行吗? --------------------编程问答--------------------
引用 3 楼 zhang399401 的回复:
为什么要点击就立即返回呢?等返回备份是否成功在返回不行吗?

数据库大的时候,备份操作可能持续好几分钟,这样的话一是用户体验不好,二是ASP.NET会超时。 --------------------编程问答-------------------- 那如果不成功呢? --------------------编程问答--------------------
引用 4 楼 XphteR 的回复:
引用 3 楼 zhang399401 的回复:为什么要点击就立即返回呢?等返回备份是否成功在返回不行吗?
数据库大的时候,备份操作可能持续好几分钟,这样的话一是用户体验不好,二是ASP.NET会超时。

那你返回还不是一样要等,可以给用户展现一个进度条,不会让用户盲目的等 --------------------编程问答-------------------- 使用ajax异步操作,如采用同步的话就会出现画面卡死的情况,假如数据库比较大,那么备份时间是比较长的 --------------------编程问答--------------------
#region 创建备份
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        //创建文件夹 
        string VMdata = "DB";
        string address = Server.MapPath("~\\Data\\");
        DirectoryInfo dir = new DirectoryInfo(VMdata);
        if (!dir.Exists == false)
        {
            ui.Alert(this, "此数据库不存在");
        }
        else
        {
            //判断文件夹是否存在 
            if (!System.IO.Directory.Exists(address))
            {
                //创建文件夹 
                System.IO.Directory.CreateDirectory(address);
            }
            else
            {
                //调用备份数据库的方法
                BackUpDB1(address);
                ui.Alert(this, "数据库备份成功");
                //重新绑定
                CreateTable();
            }
        }
    }
    #endregion

    #region 备份数据库(本地备份)
    public string BackUpDB1(string backAddress)
    {
        try
        {
            StringBuilder sql = new StringBuilder();
            string DataName = "DB" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".bak";
            //备份后的文件名称为原数据库名称+时分秒
            sql.Append("backup database DB to disk='" + backAddress + DataName + "'");
            db.ExecuteReader(sql.ToString());
            return DataName;
        }
        catch (Exception)
        {
            throw;
        }
    }
    #endregion
--------------------编程问答-------------------- 在远程系统实现的话,恐怕用户体验会很差的。用WINFORM的吧,还不如用SQL SERVER等数据库的客户端管理器来备份呢。 --------------------编程问答--------------------
引用 9 楼 hengwang007 的回复:
在远程系统实现的话,恐怕用户体验会很差的。用WINFORM的吧,还不如用SQL SERVER等数据库的客户端管理器来备份呢。

我也想到了,数据量太大的话,WEB中备份数据库的体验肯定不好。无奈,客户想要这个功能。 --------------------编程问答-------------------- 可以单击“备份”后动态的图片弹出(假进度条),这样用户感觉系统在运转,体验好点,备份完图片隐藏 --------------------编程问答-------------------- 备份数据库使用 SQLDMO,都快成了思维定势了。

一个简单的sql代码就可以备份了。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,