zoukankan      html  css  js  c++  java
  • 系统管理程序中如何备份数据库、还原数据库[代码]

    namespace BLL
    {
        public class SystemManager
        {
            private DAL.SystemService service = new DAL.SystemService();
    
            /// <summary>
            /// 备份数据库
            /// </summary>
            /// <param name="path"></param>
            /// <returns></returns>
            public string DataSoureBack(string path,string oName)
            {
                string demo = service.DataSoureBack(path);
                MODEL.BackMsg model= new MODEL.BackMsg { 
                    BackPath=path,
                    Operated=oName,
                };
                if (string.IsNullOrEmpty(demo) || demo == "success")
                {
                    model.OperatedResult = "成功";
                    model.ReasonsFailure = "";
                }
                else
                {
                    model.OperatedResult = "失败";
                    model.ReasonsFailure = demo;
                }
                new BLL.BackMsgManager().AddBackMsg(model);
                return demo;
            }
    
            /// <summary>
            /// 还原数据库
            /// </summary>
            /// <param name="path"></param>
            /// <returns></returns>
            public string RestoreData(string path)
            {
                return service.RestoreData(path);
            }
        }
    }
    
    namespace DAL
    {
        public class SystemService
        {
            public string DataSoureBack(string path)
            {
                string result = string.Empty;
                SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=Dhcs)_+;");
                SqlCommand cmdBK = new SqlCommand();
                cmdBK.CommandType = CommandType.Text;
                cmdBK.Connection = conn;
                cmdBK.CommandText = @"backup database lnsmB2B to disk='" + path + "' with init";
                try
                {
                    conn.Open();
                    cmdBK.ExecuteNonQuery();
                    result = "success";
                }
                catch (Exception ex)
                {
                    result = ex.Message;
                }
                finally
                {
                    conn.Close();
                    conn.Dispose();
                }
                
                return result;
            }
    
            public string RestoreData(string path) 
            {
                string temp = string.Empty;
                SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=Dhcs)_+;Trusted_Connection=False");
                conn.Open();
                //KILL DataBase Process
                SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='lnsmB2B'", conn);
                SqlDataReader dr;
                dr = cmd.ExecuteReader();
                ArrayList list = new ArrayList();
                while (dr.Read())
                {
                    list.Add(dr.GetInt16(0));
                }
                dr.Close();
                for (int i = 0; i < list.Count; i++)
                {
                    cmd = new SqlCommand(string.Format("KILL {0}", list[i]), conn);
                    cmd.ExecuteNonQuery();
                }
                SqlCommand cmdRT = new SqlCommand();
                cmdRT.CommandType = CommandType.Text;
                cmdRT.Connection = conn;
                cmdRT.CommandText = @"restore database lnsmB2B from disk='" + path + "'";
                try
                {
                    cmdRT.ExecuteNonQuery();
                    temp = "success";
                }
                catch (Exception ex)
                {
                    temp = ex.Message;
                }
                finally
                {
                    conn.Close();
                }
                return temp;
            }
        }
    }
    namespace BLL
    {
        public class BackMsgManager
        {
            private DAL.BackMsgService service = new DAL.BackMsgService();
    
            /// <summary>
            /// 返回所有的数据备份记录
            /// </summary>
            /// <returns></returns>
            public IList<MODEL.BackMsg> GetBackMsg()
            {
                return service.GetBackMsg();
            }
    
            /// <summary>
            /// 添加一条新的数据备份记录
            /// </summary>
            /// <param name="model"></param>
            /// <returns></returns>
            public bool AddBackMsg(MODEL.BackMsg model)
            {
                return service.AddBackMsg(model);
            }
    
            /// <summary>
            /// 删除指定ID的数据备份记录
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public bool DeleteBackMsg(string id)
            {
                return service.DeleteBackMsg(id);
            }
        }
    }

    /// <summary>
            /// 获取网站数据备份路径
            /// </summary>
            /// <param name="path"></param>
            /// <returns></returns>
            public static string DataSoureBackPath()
            {
                return HttpContext.Current.Server.MapPath("~/" + ConfigurationSettings.AppSettings["DataBackUrl"] + DateTime.Now.ToString("yyyyMMddhhmmss") + "lnsmB2B.bak");
            }

    然后再 web.config里配置保存的路径

    <appSettings>
            <!-- 数据库备份路径 -->
            <add key="DataBackUrl" value="admin/dataBack/" />
    </appSettings>

  • 相关阅读:
    23. call和apply和bind的区别
    22.call方法的深入
    21.函数的三种角色
    20.原型深入
    2.9 原型链综合复习参考
    2.8深入扩展原型链模式常用的六种继承方式
    2.7原型链模式扩展-批量设置公有属性
    php数组函数有哪些操作?php数组函数的应用
    PHP常见的一些问题总结(收藏)
    yii框架 隐藏index.php 以及美化URL(pathinfo模式访问)
  • 原文地址:https://www.cnblogs.com/beeone/p/3581404.html
Copyright © 2011-2022 走看看