Office中国论坛/Access中国论坛

标题: 局域网后台数据库压缩 [打印本页]

作者: fine88888888    时间: 2011-7-18 15:47
标题: 局域网后台数据库压缩
       大家使用ACCESS时有没有遇到多用户锁定后台数据库时无法压缩,这个问题一直纠结着~~~~~最近有想法:可否判断最后一个用户退出数据库就自动压缩后台数据库呢?但这代码怎么写呢???有木有高手指点一下??
作者: roych    时间: 2011-7-18 16:46
本帖最后由 roych 于 2011-7-18 16:47 编辑

如何判断最后一个用户是个难题,例如,网络故障导致用户退出异常,常常会被默认为在线状态。
我认为,压缩数据库还是由管理员来执行要好些。
关于后台维护,我一般是先下“逐客令”,然后再升级的(详细请点击相应链接浏览)。
作者: fine88888888    时间: 2011-7-18 18:28
如何判断最后一个用户是个难题,例如,网络故障导致用户退出异常,常常会被默认为在线状态。
我认为,压缩数据库还是由管理员来执行要好些。
关于后台维护,我一般是先下“逐客令”,然后再升级的(详细请点击相应链接浏览)。

  因为每隔两天数据库就会爆增,所以必须每两天压缩一次,每次压缩前都下“逐客令”不好吧!现在我是每天压缩时都等到所有用户退出,,,,一个字“惨”啊!能不能用代码判断后台数据库是否锁定呢?没锁定即自动压缩???
作者: roych    时间: 2011-7-18 21:51
一般情况下,分离数据库后,后台数据库跟记录条数关系应该不算太大。我之前见过400M左右的,大概是120W条左右……但你的数据库每天会增加40W条左右么?
但用户较多,且常常网络故障导致退出的话,则很快就会达到这个Size了。所以我觉得,你应该先找找到底是什么原因导致体积暴增,然后才决定如何处理。
例如每次都要操作很多表,不妨分开几个模块分别交由不同的用户来使用。
作者: chaosheng    时间: 2011-7-18 21:53
本帖最后由 chaosheng 于 2011-7-18 21:53 编辑

压缩在程序里执行,用on error resume next. 最后一个用户退出时就压缩.

但在2010里压缩提示不能用宏或代码实现了.
作者: fine88888888    时间: 2011-7-19 08:55
例如每次都要操作很多表,不妨分开几个模块分别交由不同的用户来使用。
不是每次都要操作很多表,是很多人同时操作一份表,每天增加数据也就十多万条,但不压缩输入就很慢了!
压缩在程序里执行,用on error resume next. 最后一个用户退出时就压缩.


有实例不?



作者: chaosheng    时间: 2011-7-19 11:07
其实2007,2010的文件选项里点退出时压缩就能实现最后一个用户退出压缩.
太大的数据库文件不建议用压缩,时间很久,用户不等,结束任务,那弄乱的数据事就大了.
数据爆增的用SQLServer吧.
作者: fine88888888    时间: 2011-7-19 14:01
其实2007,2010的文件选项里点退出时压缩就能实现最后一个用户退出压缩.
太大的数据库文件不建议用压缩,时间很久,用户不等,结束任务,那弄乱的数据事就大了.
数据爆增的用SQLServer吧.

我试过连SQL,但也不得要领啊,在论坛也发过贴,就是我的机能正常连接,其他受限制的用户连不到,(就是不可以连外网的用户),,特郁闷!!
作者: richang_li    时间: 2011-7-21 19:39

作者: richang_li    时间: 2011-7-21 19:40
20条记录才可以看?
作者: richang_li    时间: 2011-7-21 19:40
哎.这网站..
作者: richang_li    时间: 2011-7-21 19:41
别要求太高..
作者: richang_li    时间: 2011-7-21 19:41
注册就可以看就OK了

作者: 咱家是猫    时间: 2011-7-21 20:17
可以先复制一个后台文件,然后压缩复制品,压缩完了再替换原后台文件.
作者: 咱家是猫    时间: 2011-7-21 20:18
我说的不是手动,是全代码自动完成,使用中替换是允许的.
作者: xryacc2    时间: 2011-7-21 21:29
刚开始时,我是用每个登录进去的用户就生成一条记录,退出时就删除自已生成的那条记录,然后判定是否可压缩,但诚如二楼所说,有时用户非正常退出,他的记录就删除不了,判定依据就失去准确性了。
后来,我是用判定在同目录下,是否存在同名的.ldb文件,如果有就删除,删除出错就证明有用户在用,如果自身前端执行文件连接了数据库,则关闭所有连接数据的窗体,只留一个窗体(不连接数据),在上面设计数据备份、还原、压缩等功能按钮。
作者: xryacc2    时间: 2011-7-21 21:29
刚开始时,我是用每个登录进去的用户就生成一条记录,退出时就删除自已生成的那条记录,然后判定是否可压缩,但诚如二楼所说,有时用户非正常退出,他的记录就删除不了,判定依据就失去准确性了。
后来,我是用判定在同目录下,是否存在同名的.ldb文件,如果有就删除,删除出错就证明有用户在用,如果自身前端执行文件连接了数据库,则关闭所有连接数据的窗体,只留一个窗体(不连接数据),在上面设计数据备份、还原、压缩等功能按钮。
作者: fine88888888    时间: 2011-7-22 09:14
可以先复制一个后台文件,然后压缩复制品,压缩完了再替换原后台文件.

但原后台文件还在使用中,用户还在添加或更新数据啊,压缩完了再替换会不会丢失用户刚添加或更新的数据??

后来,我是用判定在同目录下,是否存在同名的.ldb文件,如果有就删除,删除出错就证明有用户在用,如果自身前端执行文件连接了数据库,则关闭所有连接数据的窗体,只留一个窗体(不连接数据),在上面设计数据备份、还原、压缩等功能按钮。

有没有实例啊?我也是这样构思的!但做起来就不是那么回事了。哎~~~有时候并不是想得到就做得到!!还是要绕路行走~~~




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3