主题:VFP数据丢失问题
liyingjun8
[专家分:140] 发布于 2009-10-15 08:26:00
前几天我写了个程序,运行都好,就是程序运行过程中如果突然断电,数据表中的数据会丢失,即使程序停留在主界面也是这样,后来我把程序修改了一下,程序返回主界面时我把所有表都关闭了,结果人为断电时数据还是照样丢失,各位师傅,有没有办法可以避免这一问题发生呢。
回复列表 (共28个回复)
21 楼
0901chang [专家分:10660] 发布于 2009-10-21 15:37:00
乌鸦也来凑凑热闹,用乌鸦的立场做一些鉴定:20楼是科班出身的砖家,18楼是科班出身的打工仔(为了和农民工有区别叫白领),乌鸦是城管们特别讨厌的小贩。
双系统实时备份(异地备份也是备份),这些东东是大型企业和国家高层信息中心才采用的设备配置,一般的单位没有那么多的钱。
人都是要死的,没有根本的解决办法,但是,人都希望喘气的年头多一些,穷人也想少花钱也活得舒适一些。18楼的商业软件不用双系统实时备份的硬件配置,才有他的客户,不知道20楼的配置,18楼的客户是否用的起。乌鸦吗,也有一点小名堂:用虚拟的双系统进行动态备份,也能解决客户大部分因掉电文件被破坏的问题,2007年启用之后,至今没有用户因为掉电出问题找过乌鸦。
用虚拟的双系统进行动态备份的数据库(电源)安全接近于双系统实时备份,但不需要另外的硬件投资。
22 楼
liupeisong [专家分:2340] 发布于 2009-10-21 16:42:00
其实这个帖子讨论到现在已经是牵涉到了几个问题:
1、楼主的原始问题是掉电损坏库的问题,其实电脑断电、病毒等造成死机等情况损坏库甚至磁盘是很容易的事,所以我说这个问题没有完美解决办法,应该使用UPS,一个小型的UPS是很便宜的,楼主进行这种测试本身是没有意义的;
2、对于损坏已经造成了的情况,用户最希望的是可以尽快恢复工作,楼上很多朋友的方案(比如1楼)都是不错的,能够让用户基本不用找我等开发者来解决问题,这样既少了麻烦,也能给用户一种系统稳定可靠的感觉,从商业上来讲确实是很不错的;
3、楼上的许多方案忽略了一个问题:如果库确实损坏了,数据到底丢了没有,丢了哪些,又如何完整地恢复这些损失了的数据,如果又保留了近期的原始凭据,实际上恢复是不难的,关键是备份和恢复绝对不能全自动地进行,备份要能区分哪个时刻以前的数据是完好的并且要让用户明白地知道这一点,但是用户可能是希望全自动恢复的,所以这一条和第2条实际上是矛盾的,如何处理二者的关系需要很好地考虑,其中一个办法是放弃使用DBF,实际上DBF确实比其他格式更容易坏;
4、备份的费用问题:双机热备份确实昂贵,不过异地备份却一点也不贵,比如每天将备份的光盘、U盘什么的放到财务部门的保险柜中,这个几乎不需要额外的费用;
5、事务:对于不知道事务的程序员,我不想和你争论它的重要性和必要性,我只想告诉你们,事务确实能解决很多你们无法解决的问题(比如前面我提到的银行转帐问题,以及多个客户端的售票系统不会重复售票等问题),但并不是说就需要高昂的费用,SQL SERVER、ORACLE都有免费的版本,完全免费的数据库也不少的
23 楼
0901chang [专家分:10660] 发布于 2009-10-21 17:42:00
楼上真牛,会别人都不懂的《事物》。
18楼不懂事物,所以他的软件在远程传输时经常发生重复销售问题?
24 楼
foxdb [专家分:1830] 发布于 2009-10-21 21:05:00
乌鸦老兄!你大可不必和砖家理论!砸一两块砖头也是正常滴。我想起和老种子论帖时他说过(大概意思是:现在都小轿车了,可没见自行车被淘汰了?)可见还是老种子有道理。
各位请注意:人家楼主问的是有关“DBF”自由表的事,我只能以事论事就讨论DBF的事,人家都没问SQL SERVER、ORACLE的事硬是往上扯有意义吗?建议可以,但不要乱下结论。
至于22楼所说的“事务”本人却实不懂,但我只是知道他是怎样生出来的。本人也只是知道NOVELL系统里有“事务”管理,当我使用NOVELL里的“事务”的时候,MS 还是在DOS阶段,SQL SERVER还没生出来呢!我想对一个用DBF的人讲“回滚”“存储”有意义吗?至于“双工”“镜像”“远程存储”“磁盘读写校验”“热区”等概念NOVELL在DOS时代就有了,人们用WIN98、 WINXP写入的文件有时读出后有乱码?知道为啥?FAT用的好好的为啥MS要搞NTFS?人们对Windows动不动就死机而Netware几年从来没down过也不明白!这是VFP和一般人能解决的吗?当然要是能变通解决,VFP所编的软件也就升值了。
ORACLE 却实没有多少中小企业用得起,就是买的起也在维护上养不起。SQL SERVER到是可以用D版的,但不知将来会不会有“黑屏”问题也就不知道了。
25 楼
liupeisong [专家分:2340] 发布于 2009-10-21 22:26:00
to 12楼:你真高明,所以你的系统用脚踩电源线和网线就可以攻破了!
to 24楼:那你又在这里强调以事论事就讨论DBF的事了?!
VFP只所以被有些比较极端的技术人员不承认为数据库,就是因为它不支持某些数据库的必要特性,比如事务。正因为不真正懂得事务,才会做出那种一脚就攻破的软件来。
如果不懂或不使用事务,很容易写出很烂的软件来(特别是网络版的)。当然懂事务的一样可能写出很烂的软件来。
我无意进行非技术性的争论,不过吃技术饭特别是计算机这碗饭的人,如果不加强学习,光吃老本,总有一天会吃亏的!其实一般用DBF开发的东东,通常都是使用1楼的方法来糊弄客户的,可是这能够永远糊弄下去吗?
另外,事务并不是什么特别高深的东西,学会并使用它并不难的。使用支持事务的数据库,费用也不会很高的,免费的也不少,比如SYABSE的SQLANYWHERE、ACCESS、firbird、MYSQL以及对应SQL SERVER的MSDE、ORACLE的免费版等等,维护也简单得很,有些支持自动备份,有些只是一两个文件或一个文件夹(注意是包含了所有的表),实际上单就文件数目来说可能比DBF还要简单,DBF的话有时一个表就两三个文件了
26 楼
0901chang [专家分:10660] 发布于 2009-10-22 08:38:00
楼上,看来你还是一个教授,够拽。
foxdb不懂事物?他在10楼所写的东东,就是教科书看说的事物的底层形态。
27 楼
liupeisong [专家分:2340] 发布于 2009-10-22 09:32:00
[quote]楼上,看来你还是一个教授,够拽。
foxdb不懂事物?他在10楼所写的东东,就是教科书看说的事物的底层形态。
[/quote]
我拽不拽并不重要,我只是在说一个基本的东东。事务这玩意,并不是什么高深的东东,我要拽也不会用这个来丢人!
并且我绝对不会写出什么一脚就踹坏的软件来,说实话,我从来没有想象到商业软件能写成这样的,真是大开眼界了。写几行破代码,就在那现眼,以为发现了什么宝贝似的。
28 楼
0901chang [专家分:10660] 发布于 2009-10-22 11:53:00
看来foxdb的用户多数是下里巴人,而你的用户都是阳春白雪。你当然会说:何不食肉糜?
我来回复