您的位置:首页 > 数据库

ACESS数据库在线压缩备份

2006-12-30 13:00 218 查看
主要有两种方式,第一种是引用C:\winnt\system32\msjro.dll 的COM组件,第二种不引用,直接用C#操作
第一种(未测试过,比较麻烦不是?):
添加引用COM:C:\winnt\system32\msjro.dll     
调用:using MyJro;//名称空间 
  void CompressAccess(){ string StrConn1="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("/bin/ip.mdb");
string StrConn2="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("/bin/ip2.mdb");
JetEngine DatabaseEngin=new JetEngine(); DatabaseEngin.CompactDatabase(StrConn1,StrConn2); }  //ip2.mdb是压缩后的数据库,压缩后,如果恢复备份删除ip.mdb,
第二种:

//原数据库
private string dataBasePath;
//备份后的数据库名
private string tempDataBasePath=HttpContext.Current.Request.PhysicalApplicationPath+"/data/tempdb.mdb";
//数据库连接字符串
private string connectionString;

// public void CompactAccessDB()
if (System.IO.File.Exists(tempDataBasePath))

System.IO.File.Delete(tempDataBasePath);
}
else
object[] oParams;
object objJRO = Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"));
oParams = new object[] objJRO.GetType().InvokeMember("CompactDatabase", System.Reflection.BindingFlags.InvokeMethod, null, objJRO, oParams);
System.Runtime.InteropServices.Marshal.ReleaseComObject(objJRO);
objJRO = null;
}
}
同样,恢复备份就是先删除原数据库.在线压缩还原得先关掉站点.
//用备份的库替换原数据库
System.IO.File.Move(tempDataBasePath,dataBasePath);
我用的是第二种.希望对你有用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: