博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在.Net中进行SQL Server数据库备份与还原操作实用类
阅读量:6266 次
发布时间:2019-06-22

本文共 5128 字,大约阅读时间需要 17 分钟。

#region 类说明//-----------------------------------------------------------------------------//// 项目名称:***// 文件名称:DBBakManager.cs// 文件说明:对数据库备份文件进行管理。提供备份、还原、备份文件管理操作。//// 开始日期:2007年04月04日// 开发人员:***////-----------------------------------------------------------------------------#endregionusing System;using System.Collections.Generic;using System.IO;using System.Text;using SQLDMO;       //添加引用C:Program FilesMicrosoft SQL Server80ToolsBinnSQLDMO.dllnamespace GSIM.StuManager{    ///     /// 对SQL Server数据库备份文件进行管理。提供备份、还原、备份文件管理操作。    ///     public class DBBakManager    {        字段#region 字段        private string _serverName;        private string _userName;        private string _password;        private string _dbName;        #endregion        构造#region 构造        ///         /// 构造函数        ///         /// 数据库服务器名        /// 数据库用户名        /// 用户密码        /// 数据库名        public DBBakManager(string serverName, string userName, string password,string dbName)        {            _serverName = serverName;            _userName = userName;            _password = password;            _dbName = dbName;        }        #endregion        方法#region 方法        ///         /// 备份数据库        ///         /// 保存的备份文件路径(包括文件名,文件名格式为:"DBName(yyyyMMddHHmm).bak")        /// 
操作成功返回true,否则返回false
public bool BackUpDB(string saveFileName) { SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass(); try { svr.Connect(_serverName, _userName, _password); SQLDMO.Backup bak = new SQLDMO.BackupClass(); bak.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database; bak.Initialize = true; bak.Database = _dbName; bak.Files = saveFileName; bak.SQLBackup(svr); return true; } catch (Exception err) { return false; } finally { svr.Close(); } } /// /// 还原数据库备份 /// /// 还原的备份文件路径(包括文件名,文件名格式为:"DBName(yyyyMMddHHmm).bak") ///
操作成功返回true,否则返回false
public bool RestoreDB(string fileName) { SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass(); try { svr.Connect(_serverName, _userName, _password); //取得所有的进程列表 SQLDMO.QueryResults qr = svr.EnumProcesses(-1); int iColPIDNum = -1; int iColDbName = -1; //找到和要恢复数据库相关的进程 for (int i = 1; i <= qr.Columns; i++) { string strName = qr.get_ColumnName(i); if (strName.ToUpper().Trim() == "SPID") { iColPIDNum = i; } else if (strName.ToUpper().Trim() == "DBNAME") { iColDbName = i; } if (iColPIDNum != -1 && iColDbName != -1) break; } //将相关进程关闭 for (int i = 1; i <= qr.Rows; i++) { int lPID = qr.GetColumnLong(i, iColPIDNum); string strDBName = qr.GetColumnString(i, iColDbName); if (strDBName.ToUpper() == _dbName) svr.KillProcess(lPID); } SQLDMO.Restore res = new SQLDMO.RestoreClass(); res.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; res.Files = fileName; res.Database = _dbName; res.FileNumber = 1; res.ReplaceDatabase = true; res.SQLRestore(svr); return true; } catch (Exception err) { return false; } finally { svr.Close(); } } /// /// 获得所有数据库备份文件信息,如:200704041120. /// /// 保存备份文件的文件夹路径(不包括文件名) ///
包含文件信息的字符串组
public string[] GetAllDBBak(string filePath) { string[] DBBakInfo = Directory.GetFiles(filePath, "BMIS*"); int start = DBBakInfo[0].IndexOf("("); int end = DBBakInfo[0].IndexOf(")"); //除去多余部分,返回名字中的时间信息,如:200704041120. for (int i = 0; i < DBBakInfo.Length; i++) { DBBakInfo[i] = DBBakInfo[i].Substring(start + 1, end - start - 1); } return DBBakInfo; } /// /// 删除一个数据库备份文件 /// /// 删除的备份文件路径(包括文件名,文件名格式为:"DBName(yyyyMMddHHmm).bak") ///
操作成功返回true,否则返回false
public bool DeleteDBBak(string fileName) { if (File.Exists(fileName) == true) { File.Delete(fileName); return true; } else { return false; } } #endregion }}

 

转载于:https://www.cnblogs.com/kiwifruit/p/3835487.html

你可能感兴趣的文章
Mysql Innodb存储引擎 insert 死锁分析
查看>>
好的用户界面-界面设计的一些技巧
查看>>
全端开发必备!10个最好的 Node.js MVC 框架
查看>>
初始Knockout
查看>>
HADOOP 2.6 INSTALLING ON UBUNTU 14.04 (hadoop 2.6 部署到ubuntu 14.04上面)
查看>>
OSSIM架构与组成综述
查看>>
用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目
查看>>
数据分析:基于Python的自定义文件格式转换系统
查看>>
如何重置Sitecore CMS中的管理员密码
查看>>
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
查看>>
NSBundle介绍
查看>>
POJ1811_Prime Test【Miller Rabin素数測试】【Pollar Rho整数分解】
查看>>
ConnectString中enlist设置的含义
查看>>
潜移默化学会WPF(企业经验篇)--Log4Net(二)
查看>>
轻量级面向SQL的MySQL开源监控工具
查看>>
ubuntu 卸载 程序软件
查看>>
iOS 6,5支持 portrait,landscape (横竖屏的处理)
查看>>
FineUI v3.2.2发布了!(7 天后再出新版,给不给力?)
查看>>
Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)------转帖
查看>>