//备份代码
private void Backup()
{
SqlConnection sqlConn = new SqlConnection(strConn);
strFileName = "databasebackup_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".bak";
strFile = strPath + strFileName;
strSql = "BACKUP DATABASE TeamWeb to DISK ='" + strFile + "'";
SqlCommand sqlCmd = new SqlCommand(strSql, sqlConn);
Maticsoft.Model.T_DataBaseBackUpInfo model = new Maticsoft.Model.T_DataBaseBackUpInfo();
Maticsoft.BLL.T_DataBaseBackUpInfo bll = new Maticsoft.BLL.T_DataBaseBackUpInfo();
model.Name = strFileName;
model.PostTime = DateTime.Now;
try
{
sqlConn.Open();
sqlCmd.ExecuteNonQuery();
bll.Add(model);
jc = new JsonClass("备份成功", );
sqlConn.Close();
}
catch (Exception ex)
{
jc = new JsonClass("备份失败",);
}
Response.Write(jc);
Response.End();
}
//还原代码
private void Restore(int id)
{
Maticsoft.Model.T_DataBaseBackUpInfo model = new Maticsoft.Model.T_DataBaseBackUpInfo();
Maticsoft.BLL.T_DataBaseBackUpInfo bll = new Maticsoft.BLL.T_DataBaseBackUpInfo();
model = bll.GetModel(id);
SqlConnection conn = new SqlConnection("Server=localhost;Database=master;User ID=sa;Password=123456;Trusted_Connection=False");
conn.Open();
try
{
//KILL DataBase Process
SqlCommand cmd = new SqlCommand("SELECT spid FROM SysProcesses ,Master.dbo.sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='TeamWeb'", conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while (dr.Read())
{
list.Add(dr.GetInt16());
}
dr.Close();
for (int i = ; i < list.Count; i++)
{
object num = list[i];
cmd = new SqlCommand(string.Format("KILL {0}", list[i]), conn);
cmd.ExecuteNonQuery();
}
string strfile = System.Web.HttpContext.Current.Server.MapPath("../Backup/") + model.Name;
strSql = "use master restore database TeamWeb from disk='" + strfile + "' with replace ";
SqlCommand sqlCmd = new SqlCommand(strSql, conn);
sqlCmd.ExecuteNonQuery();
jc = new JsonClass("还原成功", );
conn.Close();
SqlConnection.ClearAllPools();//还原成功后,加上这句话,再次访问数据库,就不会报:在向服务器发送请求时发生传输级错误。
}
catch (Exception ex)
{
jc = new JsonClass("还原失败", );
}
Response.Write(jc);
Response.End();
}