.net备份mysql数据库备份_asp.net 数据库备份还原(sqlserver+access)

asp.net 数据库备份还原(sqlserver+access)

更新时间:2008年11月10日 13:01:35   作者:

Asp.net 备份、还原Ms SQLServer及压缩Access数据库

/**********************************************************************************

*

* 功能说明:备份和恢复SQL Server数据库

* 作者: 刘功勋;

* 版本:V0.1(C#2.0);时间:2007-1-1

* 当使用SQL Server时,请引用 COM组件中的,SQLDMO.dll组件

* 当使用Access中,请浏览添加引用以下两个dll

* 引用C:\Program Files\Common Files\System\ado\msadox.dll,该DLL包含ADOX命名空间

* 引用C:\Program Files\Common Files\System\ado\msjro.dll,该DLL包含JRO命名空间

* *******************************************************************************/

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.IO;

using ADOX;//该命名空间包含创建ACCESS的类(方法)--解决方案 ==> 引用 ==> 添加引用 ==> 游览找到.dll

using JRO;//该命名空间包含压缩ACCESS的类(方法)

namespace EC

{

///

/// 数据库恢复和备份

///

public class SqlBackObject

{

public SqlBackObject()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

#region SQL数据库备份

///

/// SQL数据库备份

///

/// SQL服务器IP或(Localhost)

/// 数据库登录名

/// 数据库登录密码

/// 数据库名

/// 备份到的路径

public static void SQLBACK(string ServerIP,string LoginName,string LoginPass,string DBName,string BackPath)

{

SQLDMO.Backup oBackup = new SQLDMO.BackupClass();

SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();

try

{

oSQLServer.LoginSecure = false;

oSQLServer.Connect(ServerIP, LoginName, LoginPass);

oBackup.Database = DBName;

oBackup.Files = BackPath;

oBackup.BackupSetName = DBName;

oBackup.BackupSetDescription = "数据库备份";

oBackup.Initialize = true;

oBackup.SQLBackup(oSQLServer);

}

catch (Exception e)

{

throw new Exception(e.ToString());

}

finally

{

oSQLServer.DisConnect();

}

}

#endregion

#region SQL恢复数据库

///

/// SQL恢复数据库

///

/// SQL服务器IP或(Localhost)

/// 数据库登录名

/// 数据库登录密码

/// 要还原的数据库名

/// 数据库备份的路径

public static void SQLDbRestore(string ServerIP,string LoginName,string LoginPass,string DBName,string BackPath)

{

SQLDMO.Restore orestore = new SQLDMO.RestoreClass();

SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();

try

{

oSQLServer.LoginSecure = false;

oSQLServer.Connect(ServerIP, LoginName, LoginPass);

orestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;

orestore.Database = DBName;

orestore.Files = BackPath;

orestore.FileNumber = 1;

orestore.ReplaceDatabase = true;

orestore.SQLRestore(oSQLServer);

}

catch (Exception e)

{

throw new Exception(e.ToString());

}

finally

{

oSQLServer.DisConnect();

}

}

#endregion

#region 根据指定的文件名称创建Access数据库

///

/// 根据指定的文件名称创建数据

///

/// 绝对路径+文件名称

public static void CreateAccess(string DBPath)

{

if (File.Exists(DBPath))//检查数据库是否已存在

{

throw new Exception("目标数据库已存在,无法创建");

}

DBPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DBPath;

//创建一个CatalogClass对象实例

ADOX.CatalogClass cat = new ADOX.CatalogClass();

//使用CatalogClass对象的Create方法创建ACCESS数据库

cat.Create(DBPath);

}

#endregion

#region 压缩Access数据库

///

/// 压缩Access数据库

///

/// 数据库绝对路径

public static void CompactAccess(string DBPath)

{

if (!File.Exists(DBPath))

{

throw new Exception("目标数据库不存在,无法压缩");

}

//声明临时数据库名称

string temp = DateTime.Now.Year.ToString();

temp += DateTime.Now.Month.ToString();

temp += DateTime.Now.Day.ToString();

temp += DateTime.Now.Hour.ToString();

temp += DateTime.Now.Minute.ToString();

temp += DateTime.Now.Second.ToString() + ".bak";

temp = DBPath.Substring(0, DBPath.LastIndexOf("\\") + 1) + temp;

//定义临时数据库的连接字符串

string temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+temp;

//定义目标数据库的连接字符串

string DBPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DBPath;

//创建一个JetEngineClass对象的实例

JRO.JetEngineClass jt = new JRO.JetEngineClass();

//使用JetEngineClass对象的CompactDatabase方法压缩修复数据库

jt.CompactDatabase(DBPath2, temp2);

//拷贝临时数据库到目标数据库(覆盖)

File.Copy(temp, DBPath, true);

//最后删除临时数据库

File.Delete(temp);

}

#endregion

#region 备份Access数据库

///

/// 备份Access数据库

///

/// 要备份的数据库绝对路径

/// 备份到的数据库绝对路径

///

public static void Backup(string srcPath,string aimPath)

{

if (!File.Exists(srcPath))

{

throw new Exception("源数据库不存在,无法备份");

}

try

{

File.Copy(srcPath,aimPath,true);

}

catch(IOException ixp)

{

throw new Exception(ixp.ToString());

}

}

#endregion

#region 还原Access数据库

///

/// 还原Access数据库

///

/// 备份的数据库绝对路径

/// 要还原的数据库绝对路径

public static void RecoverAccess(string bakPath,string dbPath)

{

if (!File.Exists(bakPath))

{

throw new Exception("备份数据库不存在,无法还原");

}

try

{

File.Copy(bakPath, dbPath, true);

}

catch (IOException ixp)

{

throw new Exception(ixp.ToString());

}

}

#endregion

}

}

相关文章

1a1b05c64693fbf380aa1344a7812747.png

对于需要用asp.net 字母,随机数字,随机字母+数字生成随机码的朋友用的到2008-11-11

4f55910a645b073bc4fc65dc10dc14bd.png

Asp.net开发常用的51个非常实用的代码,需要的朋友可以参考下。2010-06-06

0ea3c7666119d5615e582f823fb3fad6.png

这篇文章主要介绍了.Net Core在程序的任意位置使用和注入服务的方法,很多朋友对此问题都不是很清楚,于是写这篇文章帮助大家学习,需要的朋友可以参考下2018-10-10

4f96a78db829b1556ff16de21e013c7a.png

StringBuilder类在C#中一般被用来拼接字符串,而依托.NET Framework则可以实现添加替换移除等灵活的动态字符串操作,以下就来总结一下在C#及.NET框架中使用StringBuilder类操作字符串的技巧2016-05-05

8cc1031babc6aff2319f1c6af8544aa0.png

在.NET2.0中使用自定义事务操作...2006-09-09

0c932a99bb7b6f23c937db507070cc7b.png

相对路径和绝对路径在ASP.NET中可以用~/来解决.2009-06-06

cca732bf65a93ed2ec0ac80c638460fe.png

这篇文章主要介绍了.Net遍历窗体上控件的方法,通过foreach语句实现遍历窗体上的控件以及找出TextBox控件的功能,具有一定参考借鉴价值,需要的朋友可以参考下2014-12-12

2d9f31f2af7b675a3d153d2b7f1035a7.png

这篇文章主要为大家详细介绍了ASP.NET页面请求超时时间设置Server.ScriptTimeOut executionTimeout多种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2016-09-09

b452cee8ec5cd9e58ab98eba17281e59.png

这篇文章主要介绍了详解.Net Core + Angular2 环境搭建,具有一定的参考价值,有兴趣的可以了解一下。2016-12-12

f4838ec7e2d4da28e0b57d4e852dadd4.png

这篇文章主要给大家介绍了关于ASP.NET MVC中分部视图的应用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2018-06-06

最新评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值