using System;2
using System.Collections;3
using System.Data;4
using System.Data.SqlClient;5

6
namespace DbBackUp7


{8

/**//// <summary>9
11
/// 功能描述:实现数据库的备份和还原12
/// 更新记录:13
/// </summary>14
public class DbOperate15

{ 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
try98

{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);108

109
return true;110
}111
catch(Exception ex)112

{113
return false;114
throw ex;115
}116
finally117

{118
oSQLServer.DisConnect();119
}120
}121

122

/**//// <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);147

148
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

{168

169
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
}188

189
}190

191
}192

在相应的按钮
<asp:Button id="wbtn_Backup" runat="server" Width="60px" Text="备 份" CssClass="Button"></asp:Button>
/**//// <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
}
3748



被折叠的 条评论
为什么被折叠?



