我们知道,用SQLDMO可以实现对数据库的备份与恢复,下面给出简单的实现方法。
首先需要添加对SQLDMO引用

1.实现数据库的备份:
2.实现数据库恢复:
在恢复时要注意先杀掉当前数据库的所有进程
完整的操作类如下:
在相应的按钮
首先需要添加对SQLDMO引用

1.实现数据库的备份:
1
/**////<summary>
2
///数据库备份
3
///</summary>
4
///<returns>备份是否成功</returns>
5
publicboolDbBackup()
6

{
7
stringpath=CreatePath();
8
SQLDMO.BackupoBackup=newSQLDMO.BackupClass();
9
SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
10
try
11

{
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);
21
22
returntrue;
23
}
24
catch(Exceptionex)
25

{
26
returnfalse;
27
throwex;
28
}
29
finally
30

{
31
oSQLServer.DisConnect();
32
}
33
}

/**////<summary>2
///数据库备份3
///</summary>4
///<returns>备份是否成功</returns>5
publicboolDbBackup()6


{7
stringpath=CreatePath();8
SQLDMO.BackupoBackup=newSQLDMO.BackupClass();9
SQLDMO.SQLServeroSQLServer=newSQLDMO.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);21

22
returntrue;23
}24
catch(Exceptionex)25


{26
returnfalse;27
throwex;28
}29
finally30


{31
oSQLServer.DisConnect();32
}33
}
2.实现数据库恢复:
在恢复时要注意先杀掉当前数据库的所有进程
1
/**////<summary>
2
///数据库恢复
3
///</summary>
4
publicstringDbRestore()
5

{
6
if(exepro()!=true)//执行存储过程
7

{
8
return"操作失败";
9
}
10
else
11

{
12
SQLDMO.RestoreoRestore=newSQLDMO.RestoreClass();
13
SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
14
try
15

{
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);
26
27
return"ok";
28
}
29
catch(Exceptione)
30

{
31
return"恢复数据库失败";
32
throwe;
33
}
34
finally
35

{
36
oSQLServer.DisConnect();
37
}
38
}
39
}
40
41
/**////<summary>
42
///杀死当前库的所有进程
43
///</summary>
44
///<returns></returns>
45
privateboolexepro()
46

{
47
48
SqlConnectionconn1=newSqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");
49
SqlCommandcmd=newSqlCommand("killspid",conn1);
50
cmd.CommandType=CommandType.StoredProcedure;
51
cmd.Parameters.Add("@dbname","aaa");
52
try
53

{
54
conn1.Open();
55
cmd.ExecuteNonQuery();
56
returntrue;
57
}
58
catch(Exceptionex)
59

{
60
returnfalse;
61
}
62
finally
63

{
64
conn1.Close();
65
}
66
}

/**////<summary>2
///数据库恢复3
///</summary>4
publicstringDbRestore()5


{6
if(exepro()!=true)//执行存储过程7


{8
return"操作失败";9
}10
else11


{12
SQLDMO.RestoreoRestore=newSQLDMO.RestoreClass();13
SQLDMO.SQLServeroSQLServer=newSQLDMO.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);26

27
return"ok";28
}29
catch(Exceptione)30


{31
return"恢复数据库失败";32
throwe;33
}34
finally35


{36
oSQLServer.DisConnect();37
}38
}39
}40

41

/**////<summary>42
///杀死当前库的所有进程43
///</summary>44
///<returns></returns>45
privateboolexepro()46


{47

48
SqlConnectionconn1=newSqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");49
SqlCommandcmd=newSqlCommand("killspid",conn1);50
cmd.CommandType=CommandType.StoredProcedure;51
cmd.Parameters.Add("@dbname","aaa");52
try53


{54
conn1.Open();55
cmd.ExecuteNonQuery();56
returntrue;57
}58
catch(Exceptionex)59


{60
returnfalse;61
}62
finally63


{64
conn1.Close();65
}66
}
完整的操作类如下:
1
usingSystem;
2
usingSystem.Collections;
3
usingSystem.Data;
4
usingSystem.Data.SqlClient;
5
6
namespaceDbBackUp
7

{
8
/**////<summary>
9
///创建人:Terrylee
10
///创建时间:2005年8月1日
11
///功能描述:实现数据库的备份和还原
12
///更新记录:
13
///</summary>
14
publicclassDbOperate
15

{
16
/**////<summary>
17
///服务器
18
///</summary>
19
privatestringserver;
20
21
/**////<summary>
22
///登录名
23
///</summary>
24
privatestringuid;
25
26
/**////<summary>
27
///登录密码
28
///</summary>
29
privatestringpwd;
30
31
/**////<summary>
32
///要操作的数据库
33
///</summary>
34
privatestringdatabase;
35
36
/**////<summary>
37
///数据库连接字符串
38
///</summary>
39
privatestringconn;
40
41
/**////<summary>
42
///DbOperate类的构造函数
43
///在这里进行字符串的切割,获取服务器,登录名,密码,数据库
44
///</summary>
45
publicDbOperate()
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
///<paramname="str"></param>
58
///<paramname="bg"></param>
59
///<paramname="ed"></param>
60
///<returns></returns>
61
publicstringStringCut(stringstr,stringbg,stringed)
62

{
63
stringsub;
64
sub=str.Substring(str.IndexOf(bg)+bg.Length);
65
sub=sub.Substring(0,sub.IndexOf(";"));
66
returnsub;
67
}
68
69
/**////<summary>
70
///构造文件名
71
///</summary>
72
///<returns>文件名</returns>
73
privatestringCreatePath()
74

{
75
stringCurrTime=System.DateTime.Now.ToString();
76
CurrTime=CurrTime.Replace("-","");
77
CurrTime=CurrTime.Replace(":","");
78
CurrTime=CurrTime.Replace("","");
79
CurrTime=CurrTime.Substring(0,12);
80
stringpath=@"d://aaa//";
81
path+=database;
82
path+="_db_";
83
path+=CurrTime;
84
path+=".BAK";
85
returnpath;
86
}
87
88
/**////<summary>
89
///数据库备份
90
///</summary>
91
///<returns>备份是否成功</returns>
92
publicboolDbBackup()
93

{
94
stringpath=CreatePath();
95
SQLDMO.BackupoBackup=newSQLDMO.BackupClass();
96
SQLDMO.SQLServeroSQLServer=newSQLDMO.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);
108
109
returntrue;
110
}
111
catch(Exceptionex)
112

{
113
returnfalse;
114
throwex;
115
}
116
finally
117

{
118
oSQLServer.DisConnect();
119
}
120
}
121
122
/**////<summary>
123
///数据库恢复
124
///</summary>
125
publicstringDbRestore()
126

{
127
if(exepro()!=true)//执行存储过程
128

{
129
return"操作失败";
130
}
131
else
132

{
133
SQLDMO.RestoreoRestore=newSQLDMO.RestoreClass();
134
SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
135
try
136

{
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(Exceptione)
151

{
152
return"恢复数据库失败";
153
throwe;
154
}
155
finally
156

{
157
oSQLServer.DisConnect();
158
}
159
}
160
}
161
162
/**////<summary>
163
///杀死当前库的所有进程
164
///</summary>
165
///<returns></returns>
166
privateboolexepro()
167

{
168
169
SqlConnectionconn1=newSqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");
170
SqlCommandcmd=newSqlCommand("killspid",conn1);
171
cmd.CommandType=CommandType.StoredProcedure;
172
cmd.Parameters.Add("@dbname","aaa");
173
try
174

{
175
conn1.Open();
176
cmd.ExecuteNonQuery();
177
returntrue;
178
}
179
catch(Exceptionex)
180

{
181
returnfalse;
182
}
183
finally
184

{
185
conn1.Close();
186
}
187
}
188
189
}
190
191
}
192
usingSystem;2
usingSystem.Collections;3
usingSystem.Data;4
usingSystem.Data.SqlClient;5

6
namespaceDbBackUp7


{8

/**////<summary>9
///创建人:Terrylee10
///创建时间:2005年8月1日11
///功能描述:实现数据库的备份和还原12
///更新记录:13
///</summary>14
publicclassDbOperate15


{16

/**////<summary>17
///服务器18
///</summary>19
privatestringserver;20

21

/**////<summary>22
///登录名23
///</summary>24
privatestringuid;25

26

/**////<summary>27
///登录密码28
///</summary>29
privatestringpwd;30

31

/**////<summary>32
///要操作的数据库33
///</summary>34
privatestringdatabase;35

36

/**////<summary>37
///数据库连接字符串38
///</summary>39
privatestringconn;40

41

/**////<summary>42
///DbOperate类的构造函数43
///在这里进行字符串的切割,获取服务器,登录名,密码,数据库44
///</summary>45
publicDbOperate()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
///<paramname="str"></param>58
///<paramname="bg"></param>59
///<paramname="ed"></param>60
///<returns></returns>61
publicstringStringCut(stringstr,stringbg,stringed)62


{63
stringsub;64
sub=str.Substring(str.IndexOf(bg)+bg.Length);65
sub=sub.Substring(0,sub.IndexOf(";"));66
returnsub;67
}68

69

/**////<summary>70
///构造文件名71
///</summary>72
///<returns>文件名</returns>73
privatestringCreatePath()74


{75
stringCurrTime=System.DateTime.Now.ToString();76
CurrTime=CurrTime.Replace("-","");77
CurrTime=CurrTime.Replace(":","");78
CurrTime=CurrTime.Replace("","");79
CurrTime=CurrTime.Substring(0,12);80
stringpath=@"d://aaa//";81
path+=database;82
path+="_db_";83
path+=CurrTime;84
path+=".BAK";85
returnpath;86
}87

88

/**////<summary>89
///数据库备份90
///</summary>91
///<returns>备份是否成功</returns>92
publicboolDbBackup()93


{94
stringpath=CreatePath();95
SQLDMO.BackupoBackup=newSQLDMO.BackupClass();96
SQLDMO.SQLServeroSQLServer=newSQLDMO.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
returntrue;110
}111
catch(Exceptionex)112


{113
returnfalse;114
throwex;115
}116
finally117


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

122

/**////<summary>123
///数据库恢复124
///</summary>125
publicstringDbRestore()126


{127
if(exepro()!=true)//执行存储过程128


{129
return"操作失败";130
}131
else132


{133
SQLDMO.RestoreoRestore=newSQLDMO.RestoreClass();134
SQLDMO.SQLServeroSQLServer=newSQLDMO.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(Exceptione)151


{152
return"恢复数据库失败";153
throwe;154
}155
finally156


{157
oSQLServer.DisConnect();158
}159
}160
}161

162

/**////<summary>163
///杀死当前库的所有进程164
///</summary>165
///<returns></returns>166
privateboolexepro()167


{168

169
SqlConnectionconn1=newSqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");170
SqlCommandcmd=newSqlCommand("killspid",conn1);171
cmd.CommandType=CommandType.StoredProcedure;172
cmd.Parameters.Add("@dbname","aaa");173
try174


{175
conn1.Open();176
cmd.ExecuteNonQuery();177
returntrue;178
}179
catch(Exceptionex)180


{181
returnfalse;182
}183
finally184


{185
conn1.Close();186
}187
}188

189
}190

191
}192
在相应的按钮
1
<asp:Buttonid="wbtn_Backup"runat="server"Width="60px"Text="备份"CssClass="Button"></asp:Button>
单击事件里调用即可:
<asp:Buttonid="wbtn_Backup"runat="server"Width="60px"Text="备份"CssClass="Button"></asp:Button>
1
/**////<summary>
2
///备份按钮
3
///</summary>
4
///<paramname="sender"></param>
5
///<paramname="e"></param>
6
privatevoidwbtn_Backup_Click(objectsender,System.EventArgse)
7

{
8
DbOperatedbop=newDbOperate();
9
dbop.DbBackup();
10
}
^_^

/**////<summary>2
///备份按钮3
///</summary>4
///<paramname="sender"></param>5
///<paramname="e"></param>6
privatevoidwbtn_Backup_Click(objectsender,System.EventArgse)7


{8
DbOperatedbop=newDbOperate();9
dbop.DbBackup();10
}
本文介绍使用SQLDMO组件实现数据库备份与恢复的方法。包括创建备份文件、设置备份描述及恢复数据库的具体步骤。
856

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



