在.Net中进行SQL Server数据库备份与还原操作实用类
#region 类说明
//-----------------------------------------------------------------------------
//
// 项目名称:***
// 文件名称:DBBakManager.cs
// 文件说明:对数据库备份文件进行管理。提供备份、还原、备份文件管理操作。
//
// 开始日期:20014年05月04日
// 开发人员:***
//
//-----------------------------------------------------------------------------
#endregion using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using SQLDMO; //添加引用C:Program FilesMicrosoft SQL Server80ToolsBinnSQLDMO.dll namespace GSIM.StuManager
{
/// <summary>
/// 对SQL Server数据库备份文件进行管理。提供备份、还原、备份文件管理操作。
/// </summary>
public class DBBakManager
{ 字段#region 字段 private string _serverName;
private string _userName;
private string _password;
private string _dbName; #endregion 构造#region 构造 /// <summary>
/// 构造函数
/// </summary>
/// <param name="serverName">数据库服务器名
/// <param name="userName">数据库用户名
/// <param name="password">用户密码
/// <param name="dbName">数据库名
public DBBakManager(string serverName, string userName, string password,string dbName)
{
_serverName = serverName;
_userName = userName;
_password = password;
_dbName = dbName;
} #endregion 方法#region 方法 /// <summary>
/// 备份数据库
/// </summary>
/// <param name="saveFileName">保存的备份文件路径(包括文件名,文件名格式为:"DBName(yyyyMMddHHmm).bak")
/// <returns>操作成功返回true,否则返回false</returns>
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();
}
} /// <summary>
/// 还原数据库备份
/// </summary>
/// <param name="fileName">还原的备份文件路径(包括文件名,文件名格式为:"DBName(yyyyMMddHHmm).bak")
/// <returns>操作成功返回true,否则返回false</returns>
public bool RestoreDB(string fileName)
{
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
try
{
svr.Connect(_serverName, _userName, _password);
//取得所有的进程列表
SQLDMO.QueryResults qr = svr.EnumProcesses(-);
int iColPIDNum = -;
int iColDbName = -;
//找到和要恢复数据库相关的进程
for (int i = ; 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 != - && iColDbName != -)
break;
}
//将相关进程关闭
for (int i = ; 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 = ; res.ReplaceDatabase = true;
res.SQLRestore(svr); return true;
}
catch (Exception err)
{
return false;
}
finally
{
svr.Close();
}
} /// <summary>
/// 获得所有数据库备份文件信息,如:200704041120.
/// </summary>
/// <param name="filePath">保存备份文件的文件夹路径(不包括文件名)
/// <returns>包含文件信息的字符串组</returns>
public string[] GetAllDBBak(string filePath)
{
string[] DBBakInfo = Directory.GetFiles(filePath, "BMIS*");
int start = DBBakInfo[].IndexOf("(");
int end = DBBakInfo[].IndexOf(")");
//除去多余部分,返回名字中的时间信息,如:200704041120.
for (int i = ; i < DBBakInfo.Length; i++)
{
DBBakInfo[i] = DBBakInfo[i].Substring(start + , end - start - );
}
return DBBakInfo;
} /// <summary>
/// 删除一个数据库备份文件
/// </summary>
/// <param name="fileName">删除的备份文件路径(包括文件名,文件名格式为:"DBName(yyyyMMddHHmm).bak")
/// <returns>操作成功返回true,否则返回false</returns>
public bool DeleteDBBak(string fileName)
{
if (File.Exists(fileName) == true)
{
File.Delete(fileName);
return true;
}
else
{
return false;
} } #endregion
}
}
在.Net中进行SQL Server数据库备份与还原操作实用类的更多相关文章
- (图解版)SQL Server数据库备份与还原
本文介绍了SQL Server数据库备份的两种方式.一种是直接拷贝数据库中的文件mdf 和日志文件ldf,另一种是生成脚本语言. 第一种方式: 选中需要备份的数据库,将数据库从运行的数 ...
- sql server数据库备份单个表的结构和数据生成脚本
1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...
- sql server数据库备份单个表的结构和数据生成脚本【转】
1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...
- SQL Server数据库备份的镜像
SQL Server数据库备份的镜像 一个完整备份可以分开镜像 USE master GO BACKUP DATABASE [testdatabase] TO DISK = N'C:\testdata ...
- SQL Server数据库备份:通过Windows批处理命令执行
通过Windows批处理命令执行SQL Server数据库备份 建立mybackup.bat ,输入以下内容直接运行该脚本,即可开始自动备份数据库也可把该脚本加入windows任务计划里执行. --- ...
- SQL Server数据库备份(本机)
基础的SQL Server数据库备份存储过程 /**************************************************************************** ...
- 访问内网中的sql server数据库的简便方法
前言: 有时候我们要访问局域网内的 sql server服务器,比如测试环境数据库在公司内网,回到家或在客户现场要连接内网中的数据库 第一步:假如可以连接局域网的数据库 192.168.150.129 ...
- SQL server数据库备份还原问题备忘(亲测有效)
问题一:SQL server数据库备份还原方法 http://www.cnblogs.com/zgqys1980/archive/2012/07/04/2576382.html 问题二:无法执行 BA ...
- sql server 数据库备份历史记录
sql server 数据库备份历史记录 SELECT ),SERVERPROPERTY('Servername'))AS Server, bs.database_name, bs.backup_st ...
随机推荐
- C++标准库头文件<bits/stdc++.h>
在使用GNU GCC Compiler的时候,你可以包含一个头文件<bits/stdc++.h>,便可以使用C++中的各种标准库,而不用一个一个包含进来. 这在acm比赛中是一种常用的做法 ...
- Javascript闭包学习(Closure)
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于Javascript初学者应该是很有用的. 一.变量的作用域 要理解 ...
- MySQL存储引擎与事务
1.作用 和磁盘的数据打交道 2.简介 MySQL 基于存储引擎管理 表空间数据数据文件 3.种类 Innodb存储引擎ibd:存储表的数据行和索引frm:表基本结构信息Myisam存储引擎frmm ...
- django中使用redis
第一种 安装redis模块 1.1在app中定义一个redis的连接池的py文件 import redis POOL=redis.ConnectionPool(host='127.0.0.1',por ...
- SAP Idoc 事务码
SALE Display ALE Customizing SM59 RFC Destinations (Display/Maintain) BD64 Maintenance of Distributi ...
- 查看Oracle相关日志 ADRCI
ADRCI 进去以后 show home
- vim树形目录
NERD tree树形目录插件 • 插件简介 NERD tree是一款vim树形文件资源管理器插件.NERD tree可以让你在vim中浏览你的文件系统,打开想要的文件或目录. • 插件安装 ▶ 下载 ...
- 以二进制方式读取图片保存到string
procedure TForm1.BitBtn1Click(Sender: TObject);var StringStream : TStringStream; FSize : integer; ...
- SQL Server语句创建数据库和表——并设置主外键关系
简单的创建数据库的 SQL 语句: use master go if exists(select * from sysdatabases where name='Test') begin select ...
- 如何使用iClap进行产品管理?
iClap概述: iClap是DevStore的全新产品,于2015年8月29号上线,该款产品专注于为移动互联网企业提供企业规范化解决方案,颠覆传统的产品管理模式,实现产品管理场景化.APP.甚至原型 ...