如何用SQLDMO在ASP.NET页面下实现数据库的备份与恢复 [ 日期:2005-10-27 ][ 来自:博客园 ]
我们知道,用SQLDMO可以实现对数据库的备份与恢复,下面给出简单的实现方法。
首先需要添加对SQLDMO引用
1.实现数据库的备份:
1/**////<summary>
2///数据库备份
3///</summary>
4///<returns>备份是否成功</returns>
5publicboolDbBackup()
6{
7stringpath=CreatePath();
8SQLDMO.BackupoBackup=newSQLDMO.BackupClass();
9SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
10try
11{
12oSQLServer.LoginSecure=false;
13oSQLServer.Connect(server,uid,pwd);
14oBackup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
15oBackup.Database=database;
16oBackup.Files=path;
17oBackup.BackupSetName=database;
18oBackup.BackupSetDescription="数据库备份";
19oBackup.Initialize=true;
20oBackup.SQLBackup(oSQLServer);
21
22returntrue;
23}
24catch(Exceptionex)
25{
26returnfalse;
27throwex;
28}
29finally
30{
31oSQLServer.DisConnect();
32}
33}
2.实现数据库恢复:
在恢复时要注意先杀掉当前数据库的所有进程
1/**////<summary>
2///数据库恢复
3///</summary>
4publicstringDbRestore()
5{
6if(exepro()!=true)//执行存储过程
7{
8return"操作失败";
9}
10else
11{
12SQLDMO.RestoreoRestore=newSQLDMO.RestoreClass();
13SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
14try
15{
16exepro();
17oSQLServer.LoginSecure=false;
18oSQLServer.Connect(server,uid,pwd);
19oRestore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
20oRestore.Database=database;
21/**////自行修改
22oRestore.Files=@"d:\aaa\aaa.bak";
23oRestore.FileNumber=1;
24oRestore.ReplaceDatabase=true;
25oRestore.SQLRestore(oSQLServer);
26
27return"ok";
28}
29catch(Exceptione)
30{
31return"恢复数据库失败";
32throwe;
33}
34finally
35{
36oSQLServer.DisConnect();
37}
38}
39}
40
41/**////<summary>
42///杀死当前库的所有进程
43///</summary>
44///<returns></returns>
45privateboolexepro()
46{
47
48SqlConnectionconn1=newSqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");
49SqlCommandcmd=newSqlCommand("killspid",conn1);
50cmd.CommandType=CommandType.StoredProcedure;
51cmd.Parameters.Add("@dbname","aaa");
52try
53{
54conn1.Open();
55cmd.ExecuteNonQuery();
56returntrue;
57}
58catch(Exceptionex)
59{
60returnfalse;
61}
62finally
63{
64conn1.Close();
65}
66}
完整的操作类如下:
1usingSystem;
2usingSystem.Collections;
3usingSystem.Data;
4usingSystem.Data.SqlClient;
5
6namespaceDbBackUp
7{
8/**////<summary>
9///创建人:Terrylee
10///创建时间:2005年8月1日
11///功能描述:实现数据库的备份和还原
12///更新记录:
13///</summary>
14publicclassDbOperate
15{
16/**////<summary>
17///服务器
18///</summary>
19privatestringserver;
20
21/**////<summary>
22///登录名
23///</summary>
24privatestringuid;
25
26/**////<summary>
27///登录密码
28///</summary>
29privatestringpwd;
30
31/**////<summary>
32///要操作的数据库
33///</summary>
34privatestringdatabase;
35
36/**////<summary>
37///数据库连接字符串
38///</summary>
39privatestringconn;
40
41/**////<summary>
42///DbOperate类的构造函数
43///在这里进行字符串的切割,获取服务器,登录名,密码,数据库
44///</summary>
45publicDbOperate()
46{
47conn=System.Configuration.ConfigurationSettings.AppSettings["constr"].ToString();
48server=StringCut(conn,"server=",";");
49uid=StringCut(conn,"uid=",";");
50pwd=StringCut(conn,"pwd=",";");
51database=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>
61publicstringStringCut(stringstr,stringbg,stringed)
62{
63stringsub;
64sub=str.Substring(str.IndexOf(bg)+bg.Length);
65sub=sub.Substring(0,sub.IndexOf(";"));
66returnsub;
67}
68
69/**////<summary>
70///构造文件名
71///</summary>
72///<returns>文件名</returns>
73privatestringCreatePath()
74{
75stringCurrTime=System.DateTime.Now.ToString();
76CurrTime=CurrTime.Replace("-","");
77CurrTime=CurrTime.Replace(":","");
78CurrTime=CurrTime.Replace("","");
79CurrTime=CurrTime.Substring(0,12);
80stringpath=@"d:\\aaa\\";
81path+=database;
82path+="_db_";
83path+=CurrTime;
84path+=".BAK";
85returnpath;
86}
87
88/**////<summary>
89///数据库备份
90///</summary>
91///<returns>备份是否成功</returns>
92publicboolDbBackup()
93{
94stringpath=CreatePath();
95SQLDMO.BackupoBackup=newSQLDMO.BackupClass();
96SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
97try
98{
99oSQLServer.LoginSecure=false;
100oSQLServer.Connect(server,uid,pwd);
101oBackup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
102oBackup.Database=database;
103oBackup.Files=path;
104oBackup.BackupSetName=database;
105oBackup.BackupSetDescription="数据库备份";
106oBackup.Initialize=true;
107oBackup.SQLBackup(oSQLServer);
108
109returntrue;
110}
111catch(Exceptionex)
112{
113returnfalse;
114throwex;
115}
116finally
117{
118oSQLServer.DisConnect();
119}
120}
121
122/**////<summary>
123///数据库恢复
124///</summary>
125publicstringDbRestore()
126{
127if(exepro()!=true)//执行存储过程
128{
129return"操作失败";
130}
131else
132{
133SQLDMO.RestoreoRestore=newSQLDMO.RestoreClass();
134SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
135try
136{
137exepro();
138oSQLServer.LoginSecure=false;
139oSQLServer.Connect(server,uid,pwd);
140oRestore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
141oRestore.Database=database;
142/**////自行修改
143oRestore.Files=@"d:\aaa\aaa.bak";
144oRestore.FileNumber=1;
145oRestore.ReplaceDatabase=true;
146oRestore.SQLRestore(oSQLServer);
147
148return"ok";
149}
150catch(Exceptione)
151{
152return"恢复数据库失败";
153throwe;
154}
155finally
156{
157oSQLServer.DisConnect();
158}
159}
160}
161
162/**////<summary>
163///杀死当前库的所有进程
164///</summary>
165///<returns></returns>
166privateboolexepro()
167{
168
169SqlConnectionconn1=newSqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");
170SqlCommandcmd=newSqlCommand("killspid",conn1);
171cmd.CommandType=CommandType.StoredProcedure;
172cmd.Parameters.Add("@dbname","aaa");
173try
174{
175conn1.Open();
176cmd.ExecuteNonQuery();
177returntrue;
178}
179catch(Exceptionex)
180{
181returnfalse;
182}
183finally
184{
185conn1.Close();
186}
187}
188
189}
190
191}
192
在相应的按钮
1<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>
6privatevoidwbtn_Backup_Click(objectsender,System.EventArgse)
7{
8DbOperatedbop=newDbOperate();
9dbop.DbBackup();
10}
window.attachEvent("onload",function (){AutoSizeDIV('CODE_2074')})
CREATEPROCEDUREkillspid
/*----------------------------------
创建人:Terrylee
创建事件:2005年8月1日
功能说明:
参数说明:
----------------------------------*/
(
@dbnamevarchar(20)--数据库的名称
)
AS
BEGIN
DECLARE@sqlnvarchar(500)
DECLARE@spidint
SET@sql='declaregetspidcursorforselectspidfromsysprocesseswheredbid=db_id('''+@dbname+''')'
EXECUTE(@sql)
OPENgetspid
FETCHNEXTFROMgetspidINTO@spid
WHILE@@fetch_status<>-1
BEGIN
EXECUTE('kill'+@spid)
FETCHNEXTFROMgetspidINTO@spid
END
CLOSEgetspid
DEALLOCATEgetspid
END
GO
原文地址:http://terrylee.cnblogs.com/archive/2005/10/13/253667.html
分享到:
相关推荐
根据给定的信息,本文将详细解释使用ASP.NET进行数据库备份的方法,主要聚焦于通过调用存储过程实现数据库的备份与还原。 ### ASP.NET中的数据库备份方法 #### 1. 使用SQLDMO进行数据库备份 在ASP.NET应用中,...
本篇文章将详细探讨如何使用C#语言在ASP.NET环境中实现数据库的备份和还原功能,并涉及到sqlDMO库的注册和使用。 首先,备份数据库主要涉及到SQL Server提供的T-SQL语句,如`BACKUP DATABASE`。在C#中,可以通过...
在 Asp.net 中,我们可以使用 SQLDMO.dll 组件来实现 SQL Server 数据库的备份。SQLDMO.dll 组件提供了一个名为 BackupClass 的类,该类包含了多种备份方法,例如 Backup 方法、Restore 方法等。 在示例代码中,...
下面将详细介绍如何使用ASP实现SQL数据库备份、恢复和修改数据库结构。 一、ASP中实现SQL数据库备份 在ASP中,可以使用ADODB连接SQL Server数据库,然后使用BACKUP DATABASE语句来备份数据库。以下是实现备份的...
1. SQL Server数据库备份与恢复概述: 在***应用中备份和恢复SQL Server数据库,通常需要使用SQLDMO(SQL Distributed Management Objects)对象模型,或者使用T-SQL脚本来完成。本示例中采用的是前者,即通过编程...
根据给定的文件信息,我们可以深入探讨在ASP.NET与C#环境下进行数据库备份与还原的知识点,这在软件开发及维护中是极为关键的操作之一。 ### 标题:备份还原数据库 #### 描述:asp.net c# 代码 备份 还原 数据库 ...
Interop.SQLDMO接口是微软提供的一种用于与SQL Server进行交互的COM组件,它允许开发者在非托管代码(如ASP.NET)中使用SQL Server的管理对象(SMO)。这个接口为数据库操作提供了丰富的功能,包括但不限于在线备份...
sql server sqldmo_x86_x64,C#数据库备份还原很好用的.dll,里面有使用方法,引用Interop.SQLDMO.dll后的注意事项。 SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份、还原数据库等各种功能。近日有客户...
在Asp.net中进行SQL Server数据库的还原与恢复是一项常见的任务,这通常涉及到数据库的备份文件的处理。本文将详细讲解如何使用SQLDMO库来实现这一操作,并介绍相关注意事项。 首先,SQLDMO(SQL Server Management...
SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份、还原数据库等各种功能。近日有客户要求为其在后台添加一个管理数据库的功能。于是就出现了这篇文章。 由于客户的数据库和WEB服务不再同一台服务器,当我们把...
ASP.NET利用它可以实现在线备份、还原数据库等各种功能。 由于客户的数据库和WEB服务不再同一台服务器,把网站部署在服务器上以后,运行程序,提示如下错误: Retrieving the ...
- 在现代 Web 开发中,随着 ASP.NET 和 JavaScript 的兴起,`CreateObject` 的使用频率有所下降,但在处理遗留系统时仍具有重要价值。 通过上述知识点的总结,我们可以看到 `CreateObject` 提供了一种强大而灵活的...