Office中国论坛/Access中国论坛

标题: 如何防止 ACCESS数据库损坏? [打印本页]

作者: goodidea    时间: 2004-5-2 03:08
标题: 如何防止 ACCESS数据库损坏?
最近我这里十分频繁的出现ACCESS数据库损坏问题
access的某些数据库对象损坏,无法进入设计模式进行设计,也无法运行
提示“文件损坏或网络错误”
压缩修复 以及 导入导出都不能解决问题, 只好放弃最近的修改,十分另人头疼

这是什么原因呢? 如何才能避免这种冤枉的重复工作?

作者: luqigaoyan    时间: 2004-5-2 04:53
盗版光盘造成的!
作者: caibbs    时间: 2004-5-4 17:40
你可以用保护
作者: hamletl    时间: 2004-5-4 17:47
杀毒,整理硬盘。
作者: 李啸林    时间: 2004-5-5 05:52
应该说这是小型桌面数据库的一个先天不足。

如同Fox数据库,在Dos下应用,发生问题的几率很小,而到win 98下就很容易发生问题。问题的关键在于win 98作为一个多线程的操作系统,在控制磁盘多任务读写时不是非常稳定,而DOS是单任务操作系统就没这方面的问题。

建议:改用windows 服务器版或NetWare.
作者: tmtony    时间: 2004-5-7 03:35
首先,最好的方法和首要任务是经常做好备份。然后注意下面几点:
1。对同一个MDB或ADP文件尽量使用同一个版本的ACCESS来打开修改
2。保持文件所在的目录有足够的空间,空间大小至少保留为文件大小的两倍左右,如果对窗体和报表频繁修改的话,则要求空间更大,否则极易出现上述情况
3。在导入不同版本的窗体或代码,要马上进行编绎,这点非常重要,否则,几乎大多数情况会出现上述问题。建议就算是同版本导入,也马上手工编绎。
4。在退出时可适当压缩修复
5。在文件引用的MDE类,控件或DLL文件发生位置移动或丢失时,偶尔也会出现上述情况
6。不要在网络上修改文件,尽量将文件复制到本地修改,修改好后再复制回去
7。不要显示隐藏表和系统表,因为很多情况下你会误删除这些系统表,或导入另一个MDB的系统表复盖本身的系统表,导致程序出错
8。如果你的ACCESS对象有中文命名,特别是带模块的对象,如窗体、报表、模块、类模块,这些带中文命名的对象,如果在繁体环境下打下,极易导致对象与代码脱节。
9。不要直接在设计状态从不同版本或不同语言的MDB文件中直接复制或拖拉控件或对象到你的MDB中,而应该首先创建一个新的当前语言及当前版本的新的MDB,将对象导到这个MDB中,测试没有问题后,再导入到正式的程序中去。
10。保证你的模块总数量不超过1000个(窗体模块、报表模块、模块、类模块等),有些窗体和报表虽然有界面,但不一定有模块(havmodule属性),则不在此列。不过,为了保险起见,最好保证所有窗体、报表、模块、类模块总数不能超过1000个,因为窗体和报表只要进入到代码状态,马上就拥有了模块。超过1000个会导致程序出错或损坏。
11。在窗体和表的记录操作启动ACCESS本身的记录锁定
12。程序修改好后,发布给用户时,就算不想对代码保密,也应该将程序编绎成MDE给用户使用,减少程序损坏的机会
以上也是数据损坏后悲痛后的心得,不一定完全准确,仅供参考。
作者: goodidea    时间: 2004-5-7 03:57
6。不要在网络上修改文件,尽量将文件复制到本地修改,修改好后再复制回去

有一次就是这样损坏的, 谢谢tony这么详尽的和我们一起分享自己的宝贵经验
作者: sea.er    时间: 2004-5-7 04:48
受教




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