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

1.实现数据库的备份:

 1/**//// <summary>
 2        /// 数据库备份
 3        /// </summary>
 4        /// <returns>备份是否成功</returns>
 5        public bool DbBackup()
 6        {
 7            string path = CreatePath();
 8            SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
 9            SQLDMO.SQLServer oSQLServer = new SQLDMO.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                return true;
23            }
24            catch(Exception ex)
25            {
26                return false;
27                throw ex;
28            }
29            finally
30            {
31                oSQLServer.DisConnect();
32            }
33        }

2.实现数据库恢复:
在恢复时要注意先杀掉当前数据库的所有进程

 1/**//// <summary>
 2        /// 数据库恢复
 3        /// </summary>
 4        public string DbRestore()
 5        {
 6            if(exepro()!=true)//执行存储过程
 7            {
 8                return "操作失败";
 9            }
10            else
11            {
12                SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
13                SQLDMO.SQLServer oSQLServer = new SQLDMO.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(Exception e)
30                {
31                    return "恢复数据库失败";
32                    throw e;
33                }
34                finally
35                {
36                    oSQLServer.DisConnect();
37                }
38            }
39        }
40        
41        /**//// <summary>
42        /// 杀死当前库的所有进程
43        /// </summary>
44        /// <returns></returns>
45        private bool exepro()
46        {
47
48            SqlConnection conn1 = new SqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");
49            SqlCommand cmd = new SqlCommand("killspid",conn1);
50            cmd.CommandType = CommandType.StoredProcedure;
51            cmd.Parameters.Add("@dbname","aaa");
52            try
53            {
54                conn1.Open();
55                cmd.ExecuteNonQuery();
56                return true;
57            }
58            catch(Exception ex)
59            {
60                return false;
61            }
62            finally
63            {
64                conn1.Close();
65            }
66        }

完整的操作类如下:

  1using System;
  2using System.Collections;
  3using System.Data;
  4using System.Data.SqlClient;
  5
  6namespace DbBackUp
  7{
  8    /**//// <summary>
  9    /// 创建人:Terrylee
 10    /// 创建时间:2005年8月1日
 11    /// 功能描述:实现数据库的备份和还原
 12    /// 更新记录:
 13    /// </summary>
 14    public class DbOperate
 15    {    
 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            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                return true;
110            }
111            catch(Exception ex)
112            {
113                return false;
114                throw ex;
115            }
116            finally
117            {
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            else
132            {
133                SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
134                SQLDMO.SQLServer oSQLServer = new SQLDMO.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(Exception e)
151                {
152                    return "恢复数据库失败";
153                    throw e;
154                }
155                finally
156                {
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            try
174            {
175                conn1.Open();
176                cmd.ExecuteNonQuery();
177                return true;
178            }
179            catch(Exception ex)
180            {
181                return false;
182            }
183            finally
184            {
185                conn1.Close();
186            }
187        }
188
189    }
190
191}
192

在相应的按钮

1<asp:Button id="wbtn_Backup" runat="server" Width="60px" Text="备 份" CssClass="Button"></asp:Button>

单击事件里调用即可:

 1/**//// <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        }

如何用SQLDMO在ASP.NET页面下实现数据库的备份与恢复相关推荐

  1. ubuntu系统下mysql数据库的备份与恢复

    shell脚本的形式备份/恢复mysql数据库(可通过定时任务定时执行). 1.mysql数据库的备份脚本如下: #!/bin/sh #mysqldump备份程序执行路径 DUMP=/usr/bin/ ...

  2. 在ASP.NET页面中实现数据柱状图

    棒图有时又称为"Bar"图,在ASP.NET中拥有了一个新功能--绘图功能,通过此功能就能够按照要实现的图表的模样来绘制,最后在客户端的浏览器中形成一个图片,从而显示出图表来. 本 ...

  3. asp.net页面中Menu控件下拉菜单被frame挡住和iframe自适应高度的解决办法

    当你在做一个仿windows程序的顶部菜单框架的时候,在asp.net中你可能会使用两个frame,一个frame在上面用来放菜单一个frame在下面用来方菜单点击后打开的页面.页面实现很简单,单运行 ...

  4. Response.End()在Webform和ASP.NET MVC下的表现差异

    前几天在博问中看到一个问题--Response.End()后,是否停止执行?MVC与WebForm不一致.看到LZ的描述后,虽然奇怪于为何用Response.End()而不用return方式去控制流程 ...

  5. ASP.NET页面之间传递值的几种方式

    页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...

  6. [转]ASP.NET页面生命周期描述

    ASP.NET页面生命周期描述 vigorID:Vigorcsdn 在以前写个一篇关于ASP.NET页面生命周期的草稿,最近又看了看ASP.NET,做个补充,看看页面初始过程到底是怎么样的 下面是AS ...

  7. ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)

    在介绍之前,先简单说一说ASP.NET服务端GZIP压缩模块的作用及工作原理,很多人编写网页的时候页面因为使用了大量的JS特效又或者放置很多大型动态广告导致了页面或脚本体积庞大,通常都会使用一些压缩工 ...

  8. ASP.NET页面缓存介绍

    尽管本文的作者写的很简单,但是相信通过这些文字,还是能对大家了解ASP.NET页面缓存有很大的帮助. 前几天遇到个问题,百思不得其解.后来查阅了一些资料心里才有了点思路.把自己遇到的问题记录下来希望能 ...

  9. 调整ViewState的位置,让你的asp.net页面对搜索引擎更友好

    在asp.net页面中经常会出现一些ViewState的html标记,也许某些时候你会禁用ViewState,但是某些情况下你不得不使用它--因为它的便捷性,但是由于在默认情况下,ViewState的 ...

最新文章

  1. POJ1144——网络(求割点)
  2. MacOS 终于可以完美使用 Podman 了!
  3. 机器学习第7天:深入了解逻辑回归
  4. cmd命令操作Mysql数据库,命令行操作Mysql
  5. struct ethhdr结构体详解
  6. 营销 客户旅程模板_我如何在国外找到开发人员的工作:我从营销到技术的旅程...
  7. git钩子放服务器_Git代码自动化部署、Hook、钩子
  8. ArcGIS修改矢量边界(土地利用图图斑)
  9. Emscripten 单词_人教版高中英语单词表音频(汇总版)
  10. 自然语言处理中的词袋模型
  11. windows系统设置保护视力方法
  12. 大一计算机专业学生自我月小结,大学生学习过程月度总结
  13. numpy向量化函数
  14. 幼儿园小游戏:小兔种萝卜
  15. 2023年3月华为认证HCIP新增题库(考试编号H12-821)
  16. STM32寄存器ODR,BSRR和BRR
  17. HTML5新控件 - 颜色选择器
  18. 2022-3-21至2022-3-27周报
  19. 遥感图像处理基本操作——遥感图像导入、导出、添加波段、添加删除通道、裁剪
  20. Odin Inspector 系列教程 --- Odin Static Inspector 使用

热门文章

  1. 剑指offer(刷题21-30)--c++,Python版本
  2. 面试题——死锁的实现
  3. java数据包解析_请教http请求数据包如何解析 重组
  4. 英语口语Week16 Wednesday
  5. 人心散了、项目必然要败
  6. 解决:If the number of processors is expected to increase from one, then you should configure the numbe
  7. Intellij IDEA Debug调试技巧
  8. jsp页面c标签循环map , c:foreach 循环map
  9. 【Python web 开发】viewset 实现商品详情页的接口
  10. java常用简略语含义