我们知道,用SQLDMO可以实现对数据库的备份与恢复,下面给出简单的实现方法。首先需要添加对SQLDMO引用
1.实现数据库的备份:
1 /// <summary> 2 /// 数据库备份 3 /// </summary> 4 /// <returns>备份是否成功</returns> 5 public bool DbBackup() 6 { 7 string path = CreatePath(); 8 SQLDMO.Backup oBackup = new SQLDMO.BackupClass(); 9 SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();10 try11 {12 oSQLServer.LoginSecure = false;13 oSQLServer.Connect(server,uid, pwd);14 oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;15 oBackup.Database = database;16 oBackup.Files = path;17 oBackup.BackupSetName = database;18 oBackup.BackupSetDescription = "数据库备份";19 oBackup.Initialize = true;20 oBackup.SQLBackup(oSQLServer);2122 return true;23 }24 catch(Exception ex)25 {26 return false;27 throw ex;28 }29 finally30 {31 oSQLServer.DisConnect();32 }33 }2.实现数据库恢复:在恢复时要注意先杀掉当前数据库的所有进程
1 /// <summary> 2 /// 数据库恢复 3 /// </summary> 4 public string DbRestore() 5 { 6 if(exepro()!=true)//执行存储过程 7 { 8 return "操作失败"; 9 }10 else11 {12 SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();13 SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();14 try15 {16 exepro();17 oSQLServer.LoginSecure = false;18 oSQLServer.Connect(server, uid, pwd);19 oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;20 oRestore.Database = database;21 ///自行修改22 oRestore.Files = @"d:\aaa\aaa.bak";23 oRestore.FileNumber = 1;24 oRestore.ReplaceDatabase = true;25 oRestore.SQLRestore(oSQLServer);2627 return "ok";28 }29 catch(Exception e)30 {31 return "恢复数据库失败";32 throw e;33 }34 finally35 {36 oSQLServer.DisConnect();37 }38 }39 } 40 41 /// <summary>42 /// 杀死当前库的所有进程43 /// </summary>44 /// <returns></returns> 45 private bool exepro() 46 {4748 SqlConnection conn1 = new SqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");49 SqlCommand cmd = new SqlCommand("killspid",conn1);50 cmd.CommandType = CommandType.StoredProcedure;51 cmd.Parameters.Add("@dbname","aaa");52 try53 {54 conn1.Open();55 cmd.ExecuteNonQuery();56 return true;57 }58 catch(Exception ex)59 {60 return false;61 }62 finally63 {64 conn1.Close();65 }66 }完整的操作类如下:
1 using System; 2 using System.Collections; 3 using System.Data; 4 using System.Data.SqlClient; 5 6 namespace DbBackUp 7 { 8 /// <summary> 9 /// 创建人:Terrylee 10 /// 创建时间:2005年8月1日 11 /// 功能描述:实现数据库的备份和还原 12 /// 更新记录: 13 /// </summary> 14 public class DbOperate 15 { 16 /// <summary> 17 /// 服务器 18 /// </summary> 19 private string server; 20 21 /// <summary> 22 /// 登录名 23 /// </summary> 24 private string uid; 25 26 /// <summary> 27 /// 登录密码 28 /// </summary> 29 private string pwd; 30 31 /// <summary> 32 /// 要操作的数据库 33 /// </summary> 34 private string database; 35 36 /// <summary> 37 /// 数据库连接字符串 38 /// </summary> 39 private string conn; 40 41 /// <summary> 42 /// DbOperate类的构造函数 43 /// 在这里进行字符串的切割,获取服务器,登录名,密码,数据库 44 /// </summary> 45 public DbOperate() 46 { 47 conn = System.Configuration.ConfigurationSettings.AppSettings["constr"].ToString(); 48 server = StringCut(conn,"server=",";"); 49 uid = StringCut(conn,"uid=",";"); 50 pwd = StringCut(conn,"pwd=",";"); 51 database = StringCut(conn,"database=",";"); 52 } 53 54 /// <summary> 55 /// 切割字符串 56 /// </summary> 57 /// <param name="str"></param> 58 /// <param name="bg"></param> 59 /// <param name="ed"></param> 60 /// <returns></returns> 61 public string StringCut(string str,string bg,string ed) 62 { 63 string sub; 64 sub=str.Substring(str.IndexOf(bg)+bg.Length); 65 sub=sub.Substring(0,sub.IndexOf(";")); 66 return sub; 67 } 68 69 /// <summary> 70 /// 构造文件名 71 /// </summary> 72 /// <returns>文件名</returns> 73 private string CreatePath() 74 { 75 string CurrTime = System.DateTime.Now.ToString(); 76 CurrTime = CurrTime.Replace("-",""); 77 CurrTime = CurrTime.Replace(":",""); 78 CurrTime = CurrTime.Replace(" ",""); 79 CurrTime = CurrTime.Substring(0,12); 80 string path = @"d:\\aaa\\"; 81 path += database; 82 path += "_db_"; 83 path += CurrTime; 84 path += ".BAK"; 85 return path; 86 } 87 88 /// <summary> 89 /// 数据库备份 90 /// </summary> 91 /// <returns>备份是否成功</returns> 92 public bool DbBackup() 93 { 94 string path = CreatePath(); 95 SQLDMO.Backup oBackup = new SQLDMO.BackupClass(); 96 SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass(); 97 try 98 { 99 oSQLServer.LoginSecure = false;100 oSQLServer.Connect(server,uid, pwd);101 oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;102 oBackup.Database = database;103 oBackup.Files = path;104 oBackup.BackupSetName = database;105 oBackup.BackupSetDescription = "数据库备份";106 oBackup.Initialize = true;107 oBackup.SQLBackup(oSQLServer);108109 return true;110 }111 catch(Exception ex)112 {113 return false;114 throw ex;115 }116 finally117 {118 oSQLServer.DisConnect();119 }120 }121122 /// <summary>123 /// 数据库恢复124 /// </summary>125 public string DbRestore()126 {127 if(exepro()!=true)//执行存储过程128 {129 return "操作失败";130 }131 else132 {133 SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();134 SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();135 try136 {137 exepro();138 oSQLServer.LoginSecure = false;139 oSQLServer.Connect(server, uid, pwd);140 oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;141 oRestore.Database = database;142 ///自行修改143 oRestore.Files = @"d:\aaa\aaa.bak";144 oRestore.FileNumber = 1;145 oRestore.ReplaceDatabase = true;146 oRestore.SQLRestore(oSQLServer);147148 return "ok";149 }150 catch(Exception e)151 {152 return "恢复数据库失败";153 throw e;154 }155 finally156 {157 oSQLServer.DisConnect();158 }159 }160 }161 162 /// <summary>163 /// 杀死当前库的所有进程164 /// </summary>165 /// <returns></returns>166 private bool exepro()167 {168169 SqlConnection conn1 = new SqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");170 SqlCommand cmd = new SqlCommand("killspid",conn1);171 cmd.CommandType = CommandType.StoredProcedure;172 cmd.Parameters.Add("@dbname","aaa");173 try174 {175 conn1.Open();176 cmd.ExecuteNonQuery();177 return true;178 }179 catch(Exception ex)180 {181 return false;182 }183 finally184 {185 conn1.Close();186 }187 }188189 }190191} 192在相应的按钮
1 < asp:Button id ="wbtn_Backup" runat ="server" Width ="60px" Text ="备 份" CssClass ="Button" ></ asp:Button >单击事件里调用即可:
1 /// <summary> 2 /// 备份按钮 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void wbtn_Backup_Click( object sender, System.EventArgs e) 7 { 8 DbOperate dbop = new DbOperate(); 9 dbop.DbBackup();10 }转载于:https://www.cnblogs.com/liyuxin/archive/2011/07/07/2100114.html
相关资源:各显卡算力对照表!