| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1671 人关注过本帖
标题:如何避免或减少数据库损坏的情况
只看楼主 加入收藏
大树临风
Rank: 2
等 级:论坛游民
帖 子:132
专家分:14
注 册:2015-12-9
结帖率:75.68%
收藏
已结贴  问题点数:20 回复次数:9 
如何避免或减少数据库损坏的情况
程序异常退出时,经常把数据库损坏,看到有帖子上讲,对于只读不写的数据表,建议使用将数据导入自由表或临时表读取操作,这样做可行吗?哪位大侠给讲讲
搜索更多相关主题的帖子: 临时表 减少 数据库 导入 损坏 
2021-11-09 23:30
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2215
专家分:3882
注 册:2007-4-27
收藏
得分:4 
做中考十多年,从未遇到表损坏。因为我用的都是自由表,为了自由嘛。尽量少用表的索引,有索引容易损坏。再无其他的经验了。

只求每天有一丁点儿的进步就可以了
2021-11-10 08:00
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:4 
1、数据备份和恢复
2、重要数据文件打开关闭有节
3、数据变动即时FLUSH
4、打开文件容错处理,尽可能自动修复和恢复数据
2021-11-10 08:49
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:947
专家分:683
注 册:2016-6-29
收藏
得分:4 
回复 3楼 吹水佬
吹水佬版主把各种情况都考虑进去了。我用的外置硬盘,每每突然断电,都会造成部分表文件损坏,只好从新制表文件,有时不但数据损坏,连表结构也损坏了,只能从磁盘上删除。都是,没有办法的办法。
    而对于Excel表,只是没有储存改写的信息(以前的数据不会丢失),没有因为停电,损坏文件的事情发生。

素数问题的解决是我学习编程永恒的动力。
2021-11-10 09:31
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1093
专家分:2690
注 册:2015-12-30
收藏
得分:4 
回复 楼主 大树临风
本地的数据库表如果打开后进行了修改、添加记录、修改结构等update后,建议及时关闭或刷新,否则可能会造成库表损坏,根据操作的不同,损坏程程度也不同。
我的建议:把本地库表数据读入临时表进行处理,需要更新本地库表的时候,更新程序一次执行完毕,中间不要有交互或断点,更新后及时关闭本地库表。
另外:定期做好数据备份是一个好习惯!
个人建议,供参考
2021-11-10 13:47
shenlancwz
Rank: 2
等 级:论坛游民
威 望:3
帖 子:52
专家分:70
注 册:2018-11-7
收藏
得分:4 
尽量用共享打开,对表的更新尽量用SQL命令,能避免99.9%的损坏可能性。
2021-11-10 13:49
大树临风
Rank: 2
等 级:论坛游民
帖 子:132
专家分:14
注 册:2015-12-9
收藏
得分:0 
回复 5楼 laowan001
追问一个问题,临时表使用应注意什么?系统会自动释放临时表吗?
2021-11-21 21:50
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1093
专家分:2690
注 册:2015-12-30
收藏
得分:0 
回复 7楼 大树临风
临时表没有delete/pack
create的临时表可读写
select * from TB into cursor 临时表 (readwrite),如果不加readwrite则为只读
临时表也可以建索引

个人感觉,临时表的使用与本地表没啥大区别,只是效率会高一点点

临时表用完关闭即可释放资源

我目前的应用系统除了数据字典是本地表(远程下载的),其他都是临时表

[此贴子已经被作者于2021-11-22 08:17编辑过]

2021-11-22 08:01
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:766
专家分:2517
注 册:2011-5-8
收藏
得分:0 
DBF表损坏是VFP最大缺点之一,这是由VFP打开表的方式决定的。打开的表与关闭的表,其表头结构不同(可能是为了提高效率)。另外,考虑到单机磁盘空间与速度,并没有建立一个完整的临时文件。正常关闭时会将表头改回,增减过记录的表直接断电,几乎都会破坏。
没有研究过这两种表头的关系,如果没有备注字段、并且知道原表的结构可以手工修复。
1、建立一个空表,结构与要修复的相同
2、用二进制编辑器打开损坏的表,删除第一条记录前的内容保存为文本文件
3、用Append命令将其加入到新表中。
这样的操作可以完全恢复到的最后操作状态。
有一个例外,就是执行PACK命令时断电,修复起来比较难(曾经用了一个2W多记录的表,在486上试过)。
以上都是2005年前做的,现在有修复工具可以解决大部分问题。
05年之后,我几乎不用DFB保存关键数据了,后台用过SQL、Oracle、Access都没有丢失过数据。如果有条件最好用Oracle,它的回溯功能最好。

dBase有人接盘了。
2021-11-22 08:25
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
收藏
得分:0 
这个和移动磁盘的存储机制有关,安全退出U盘才不丢数据
2021-11-22 08:42
快速回复:如何避免或减少数据库损坏的情况
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040278 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved