<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head runat="server">
    <title>Login11</title>
    <script src="../../ext/ext-all.js" type="text/javascript">
       
    </script>
    <link href="../../ext/resources/css/ext-all.css" rel="stylesheet" type="text/css" />
    <script src="../../ext/locale/ext-lang-zh_CN.js" type="text/javascript">
       
    </script>
    <script type="text/javascript">
        Ext.onReady(function () {
            Ext.tip.QuickTipManager.init();
 
            var myMask = new Ext.LoadMask(Ext.getBody(), {
                id: 'mask',
                msg: "配置操作中,请稍等..."
            });
 
            var mystore = Ext.create('Ext.data.Store', {
                fields: ['Name', 'CreationTime', 'Length', 'FullName'],
                autoLoad: true,
                pageSize: 10,
                proxy: {
                    type: 'ajax',
                    url: '/AdLogin/filedata',
                    reader: {
                        type: 'json',
                        root: 'd'
                    }
                }
            });
            Ext.delfile = function (file) {
                myMask.show();
                Ext.Ajax.request({
                    url: '/AdLogin/deleFile?file=' + file,
                    async: true,
                    success: function (response, opts) {
                        myMask.hide();
                        var obj = Ext.decode(response.responseText);
                        Ext.Msg.alert("提醒", "删除成功");
                        mystore.load();
                    },
                    failure: function (response, opts) {
 
                    }
                });
 
            }
 
            Ext.restore = function (file) {
                myMask.show();
                Ext.Ajax.request({
                    url: '/AdLogin/reStore?file=' + file,
                    async: true,
                    success: function (response, opts) {
                        myMask.hide();
                        var obj = Ext.decode(response.responseText);
                        Ext.Msg.alert("提醒", "还原成功");
 
 
                    },
                    failure: function (response, opts) {
 
                    }
                });
            }
            function bfstore() {
                myMask.show();
                Ext.Ajax.request({
                    url: '/AdLogin/bfStore',
                    async: true,
                    success: function (response, opts) {
                        myMask.hide();
                        Ext.Msg.alert("提醒", "备份成功");
                        mystore.load();
                    },
                    failure: function (response, opts) {
 
                    }
                });
 
            }
 
            var bfButton = Ext.create("Ext.Button", {
                text: '备份数据库',
                handler: function () {
                    bfstore();
                }
            });
 
            var mygrid = Ext.create('Ext.grid.Panel', {
                title: '数据库管理',
                layout: 'fit',
                dockedItems: [{
                    xtype: 'toolbar',
                    dock: 'top',
                    items: [bfButton]
                }],
                store: mystore,
                bbar: Ext.create('Ext.toolbar.Paging', {
                    store: mystore,
                    dock: 'bottom',
                    displayInfo: true
                }),
 
                columns: [{
                    header: '操作',
                    width: 180,
                    dataIndex: 'Name',
                    renderer: function (value) {
                        return ' <a href="#" onclick="Ext.delfile(\'' + value + '\')">删除备份</a>  <a href="#" onclick="Ext.restore(\'' + value + '\')">还原数据库</a>';
                    }
                }, {
                    header: '文件名称',
                    dataIndex: 'Name',
                    width: 200
                },
                {
                    header: '创建日期',
                    dataIndex: 'CreationTime',
                    width: 200,
                    renderer: function (value) {
                        var dt = new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
                        return Ext.Date.format(dt, 'Y-m-d h:m:s');
                    }
                },
                {
                    header: '备份大小',
                    width: 200,
                    dataIndex: 'Length',
                    renderer: function (value) {
                        return (value / 1024/1024).toFixed(2)+"MB";
                    }
                },
                {
                    header: '文件路径',
                    width: 400,
                    dataIndex: 'FullName'
                }]
            });
 
 
            Ext.create('Ext.container.Viewport',
            {
                layout: 'fit',
                items: [mygrid]
            });
 
 
        });
    </script>
</head>
<body>
    <div>
    </div>
</body>
</html>
 
 
 
 
 
 
 
 
  public ActionResult filedata()
        {
            string path = Server.MapPath("/backdata/");
            DirectoryInfo di = new DirectoryInfo(path);
            FileInfo[] list = di.GetFiles();
            List<FileInfo> list1 = new List<FileInfo>();
            for (int i = 0; i < list.Length; i++)
            {
                list1.Add(list[i]);
            }
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            int start = Convert.ToInt32(Request.QueryString["start"]);
            int limit = Convert.ToInt32(Request.QueryString["limit"]);
            int allcount = list1.Count();
            list1 = list1.Select(d => d).OrderByDescending(d => d.CreationTime).Skip(start).Take(limit).ToList();
            return Content("{\"total\": " + allcount + ", d: " + serializer.Serialize(list1.Select(t => new {t.CreationTime,t.Name,t.FullName,t.Length })) + " }");
 
        }
        public ActionResult deleFile()
        {
            string file = Request.QueryString["file"];
            string path = Server.MapPath("/backdata/") + file;
            if (System.IO.File.Exists(path))
            {
                System.IO.File.Delete(path);
            }
            return Content("{success:true}");
        }
        string database = "haoyhb";
        public ActionResult reStore()
        {
            string file = Request.QueryString["file"];
            string path = Server.MapPath("/backdata/") + file;
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(path);
            DbHelperSQL.RestoreDatabase(fileInfo.FullName, database);
            return Content("{success:true}");
        }
 
        public ActionResult bfStore() {
            DbHelperSQL.BackUpDataBase(Server.MapPath("/backdata/") + DateTime.Now.ToString("yyyyMMddHHmmss") + ".bak", database);
            return Content("{success:true}");
        }
 
 
 
 
   public static bool BackUpDataBase(string databasefile, string database)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                if (File.Exists(databasefile))
                {
                    File.Delete(databasefile);
                }
                //还原的数据库MyDataBase
                string sql = "BACKUP DATABASE " + database + " TO DISK = '" + databasefile + "' ";
                conn.Open();
                SqlCommand comm = new SqlCommand(sql, conn);
                comm.CommandType = CommandType.Text;
                try
                {
                    comm.ExecuteNonQuery();
                }
                catch (Exception err)
                {
                    string str = err.Message;
                    conn.Close();
 
                    return false;
                }
 
                conn.Close();//关闭数据库连接
                return true;
            }
        }
 
 
 
 
        //以下是还原数据库,稍微麻烦些,要关闭所有与当前数据库相连的连接------------------------------------
 
        //--------------------------------------------------------------------------------------------------------------------------
        public static string RestoreDatabase(string backfile, string database)
        {
            ///杀死原来所有的数据库连接进程
 
 
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "Data Source=.;Initial Catalog=master;User ID=sa;pwd =sa";
            conn.Open();
 
            string sql = "SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='" + database + "'";
            SqlCommand cmd1 = new SqlCommand(sql, conn);
            SqlDataReader dr;
            ArrayList list = new ArrayList();
            try
            {
                dr = cmd1.ExecuteReader();
                while (dr.Read())
                {
                    list.Add(dr.GetInt16(0));
                }
                dr.Close();
            }
            catch (SqlException eee)
            {
                //MessageBox.Show(eee.ToString());
                return "还原失败";
            }
            finally
            {
                conn.Close();
            }
            //MessageBox.Show(list.Count.ToString());
            for (int i = 0; i < list.Count; i++)
            {
                conn.Open();
                cmd1 = new SqlCommand(string.Format("KILL {0}", list[i].ToString()), conn);
                cmd1.ExecuteNonQuery();
                conn.Close();
                // MessageBox.Show("系统已经清除的数据库线程: " + list[i].ToString() + "\r\n正在还原数据库!");
            }
            //这里一定要是master数据库,而不能是要还原的数据库,因为这样便变成了有其它进程
            //占用了数据库。
            string constr = @"Data Source=.;Initial Catalog=master;User ID=sa;pwd =sa";
            string path = backfile;
            string BACKUP = String.Format("RESTORE DATABASE {0} FROM DISK = '{1}' WITH REPLACE", database, path);
            SqlConnection con = new SqlConnection(constr);
            SqlCommand cmd = new SqlCommand(BACKUP, con);
            con.Open();
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ee)
            {
                //throw(ee);
                return "还原失败";
                //MessageBox.Show("还原失败");
 
            }
            finally
            {
                con.Close();
            }
            return "还原成功";
 
        }

Ext sqlserver C# 数据库备份还原代码,给大家参考下的更多相关文章

  1. [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)

    /// <summary>/// 通过调用MSSQL的SQLDMO.DLL文件来实现备份数据库/// 1.首先在在项目中引用SQLDMO.DLL文件./// 2.在引用中的SQLDMO.D ...

  2. 查询清除SQL Server数据库备份还原历史记录

    曾经遇到过一个用户MSDB数据库非常大,让我帮忙查查是什么原因.使用sp_spaceused找出了所有表的数据大小,发现问题是SQL Server备份和还原历史表数据太大.用户经常会做日志备份,但是从 ...

  3. C#中数据库备份还原 精简

    C#中数据库备份还原 使用前要导入SQLDMO.dll(在com组件中导入Microsoft SQLDMO Object Library即可) ///     /// DbOper类,主要应用SQLD ...

  4. MySQL数据库备份还原(基于binlog的增量备份)

    MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份      增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...

  5. MSSQL2008数据库备份还原和数据恢复

    原文:MSSQL2008数据库备份还原和数据恢复   序言 一直想写一篇关于数据库备份与恢复的文章,但基于能力的有限对数据库认知的有限怕不足以准确的表达,最后思考很久还是决定把自己的一些理解写出来供大 ...

  6. SQL server数据库备份还原问题备忘(亲测有效)

    问题一:SQL server数据库备份还原方法 http://www.cnblogs.com/zgqys1980/archive/2012/07/04/2576382.html 问题二:无法执行 BA ...

  7. 第二百九十节,MySQL数据库-MySQL命令行导出导入数据库,数据库备份还原

    MySQL命令行导出导入数据库,数据库备份还原 MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program ...

  8. Oracle数据库备份还原笔记

    Oracle数据库备份还原笔记 通过查阅资料知道Oracle备份还原的方式有三种.分别的是导出/导入.热备份和冷备份.导出/导入是一种逻辑备份.而热备份和冷备份是物理备份.[参考资料(https:// ...

  9. SQL Server数据库备份&还原

    一.备份 1.登录数据库 2.找到要还原的数据库 右键-任务-备份-添加(路径只写一个,刚开始二个总是报错)-确定 二.还原数据库 这个之间报错了二次 1.报错1:备份集中的数据库与现有数据库“XXX ...

随机推荐

  1. 5-Java-C(小题答案)

    1. a[i][j]=a[i-1][j-1]+a[i-1][j] 2.1835421 3.93 4.1572836

  2. CAD参数绘制圆弧(网页版)

    在CAD设计时,需要绘制圆弧,用户可以在图面点圆弧起点,圆弧上的一点和圆弧的终点,这样就绘制出圆弧. 主要用到函数说明: _DMxDrawX::DrawArc2 由圆弧上的三点绘制一个圆弧.详细说明如 ...

  3. LAME的“命令行”

    VBR 编码 (强烈推荐) Alt Preset Extreme (平均256kbps) 我们有时在网上可以看到".LAME-APX." 就是这种形式,我们也可以在文件名中包含这个 ...

  4. 执行jar包报错:udfFull.jar中没有主清单属性

    在windows系统的cmd命令行窗口中执行: java -jar udfFull.jar {"movie":"1287","rate":& ...

  5. Myeclipse中dubug调试出现参数显示的框

    1.步骤: window>show view>variables 结果:

  6. JS判断字符串包含的方法

    本文实例讲述了JS判断字符串包含的方法.分享给大家供大家参考.具体如下: 1. 例子: 1 2 3 4 5 6 7 8 var tempStr = "tempText" ; var ...

  7. php使用命名空间时自动加载机制

    命名空间主要为了解决用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突.不过并不是你定义了使用命名空间的类,就可以在任何地方随意使用了,需要在程序运行时将定义命名空间的类文 ...

  8. 简述站点访问控制、基于用户的访问控制、httpd虚拟主机、持久链接等应用配置实例

    1 站点访问控制 可基于两种机制指明对哪些资源进行何种访问控制: 文件系统路径 URL路径 注意: 从上到下匹配,匹配到一个就立即执行 如果没有子目录的访问控制,但是有父目录的访问控制,则子目录继承父 ...

  9. Python-基本图形绘制及库引用

    turtle库的使用 概述:turtle(海龟)库是turtle绘图体系的python实现 turtle库的理解: -有一只海龟,其实在窗体正中心,在画布上游走 -走过的轨迹形成了绘制的图形 -海龟由 ...

  10. 【Codeforces 1031C】Cram Time

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 如果找到最大的n使得1+2+...+n<=a+b 然后第一天输出1,2.3,4....t1 这里1+2+..+t1<=a 这还远远 ...