using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; /// <summary> ///operatedatabase 的摘要说明 /// </summary> public class operatedatabase { /**/ /// <summary> /// 服务器 /// </summary> private string server; /**/ /// <summary> /// 登录名 /// </summary> private string uid; /**/ /// <summary> /// 登录密码 /// </summary> private string pwd; /**/ /// <summary> /// 要操作的数据库 /// </summary> private string database; /**/ /// <summary> /// 数据库连接字符串 /// </summary> private string conn; /// <summary> /// 截取webconfig.xml的配置 /// </summary> public operatedatabase() { conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; server = StringCut(conn, "server=", ";"); uid = StringCut(conn, "user=", ";"); pwd = StringCut(conn, "pwd=", ";"); database = StringCut(conn, "database=", ";"); } /// <summary> /// 截取 /// </summary> /// <param name="str"></param> /// <param name="bg"></param> /// <param name="ed"></param> /// <returns></returns> public string StringCut(string str, string bg, string ed) { string sub; sub = str.Substring(str.IndexOf(bg) + bg.Length); sub = sub.Substring(0, sub.IndexOf(";")); return sub; } /// <summary> /// 生成文件名 /// </summary> /// <returns></returns> private string CreatePath(string url) { string CurrTime = System.DateTime.Now.ToString(); CurrTime = CurrTime.Replace("-", ""); CurrTime = CurrTime.Replace(":", ""); CurrTime = CurrTime.Replace(" ", ""); CurrTime = CurrTime.Substring(0, 11); string path = url; path += database; path += "_db_"; //path += CurrTime; path += "backups"; path += ".BAK"; return path; } /// <summary> /// 备份 /// </summary> /// <returns></returns> public bool backups(string url) { string path = CreatePath(url); SQLDMO.Backup oBackup = new SQLDMO.BackupClass(); SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass(); try { oSQLServer.LoginSecure = false; oSQLServer.Connect(server, uid, pwd); oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database; oBackup.Database = database; oBackup.Files = path; oBackup.BackupSetName = database; oBackup.BackupSetDescription = "数据库备份"; oBackup.Initialize = true; oBackup.SQLBackup(oSQLServer); return true; } catch (Exception ex) { return false; throw ex; } finally { oSQLServer.DisConnect(); } } /// <summary> /// 还原 /// </summary> /// <returns></returns> public bool restore(string url) { if (exepro() != true)//执行存储过程 { return false; } else { SQLDMO.Restore oRestore = new SQLDMO.RestoreClass(); SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass(); try { exepro(); oSQLServer.LoginSecure = false; oSQLServer.Connect(server, uid, pwd); oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; oRestore.Database = database; /**/ ///自行修改 oRestore.Files = url + "mh_ShoppingDB_db_backups.BAK"; oRestore.FileNumber = 1; oRestore.ReplaceDatabase = true; oRestore.SQLRestore(oSQLServer); return true; } catch (Exception ex) { return false; throw ex; } finally { oSQLServer.DisConnect(); } } } /// <summary> /// 在master数据库中执行killspid存储过程 /// </summary> /// <returns></returns> private bool exepro() { SqlConnection conn1 = new SqlConnection("server=" + server + ";User=" + uid + ";pwd=" + pwd + ";database=master"); SqlCommand cmd = new SqlCommand("killspid", conn1); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@dbname", database); try { conn1.Open(); cmd.ExecuteNonQuery(); return true; } catch (Exception ex) { return false; } finally { conn1.Close(); } } }