荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: huanghm (东方不败), 信区: Database
标  题: 修复FoxPro应用中损坏的数据库文件
发信站: 深大荔园晨风站 (Sat Apr 18 00:01:23 1998), 转信

  FoxPro仍是目前广泛使用的微机数据库管理系统之一
。但在实际应用中,数据库文件时常可能被损坏。使用软
磁盘传递数据库文件时,可能发生数据库文件的静态损坏
,但更严重的问题是,一个实际应用的FoxPro数据库管理
系统在投入使用之后,发生数据库文件的动态损坏。如果
不能修复损坏的数据库文件,不仅影响应用系统的正常运
行,而且将给用户造成极大的损失。本文将讲述数据库文
件动态损坏时的现象、产生损坏的原因,以及修复数据库
文件的方法。这些方法成功地应用于作者编制的全国人大
常务委员会的《信访办公系统》。

  数据库文件动态损坏时的现象

  当应用程序运行时,使用 USE<库文件名>命令打开数
据库文件,系统出现出错提示:

  Not a database file

  这时数据库文件被损坏。中断应用程序后,在FoxPro
的命令窗口中,使用USE《库文件名》,仍然出现上述出
错提示。也就是说,这时在FoxPro中,将永远不能打开这
个数据库文件。FoxPro对数据库文件的所有操作,都是在
成功打开数据库文件之后进行的。这种损坏是一个十分严
重的问题。必须对损坏的数据库文件进行修复,否则用户
登录的资料将全部丢失。这是不能允许的。

  数据库文件动态损坏的原因

  服务器非正常关机,是造成数据库文件动态损坏的主
要原因。没有使用 UPS电源的服务器,市电突然中断或者
服务器电源插头接触不良,是服务器非正常关机的主要原
因。使用UPS电源的服务器,在UPS电源报警之后,应立即
将服务器正常关机。否则,UPS电源的后备电池耗尽,也
会造成服务器非正常关机。

  在FoxPro运行时,向数据库中添加一条记录或者修改
一个字段,FoxPro将自动锁定这个记录,将新的信息直接
写入硬盘。在操作结束后,自动对这个记录解锁。操作期
间,服务器突然非正常关闭,造成记录不完整,将数据库
文件动态损坏。

  在FoxPro运行时,每打开一个数据库文件,都要对这
个数据库文件进行格式检查。当系统检查到不完整的记录
时,因与FoxPro规定的文件格式不符,所以FoxPro认为该
文件不是一个数据库文件。这个数据库文件不能成功地打
开,并输出出错提示。不能对这个数据库文件进行任何操
作。

  数据库文件的修复方法

  对于已经损坏的数据库文件,由于在FoxPro中不能进
行打开操作,所以不能使用FoxPro中的任何命令对其进行
修复,只能退出FoxPro进行处理。

  对掌握FoxPro知识程度不同的人,有几种不同的修复
方法。

  1、对于FoxPro的命令不了解,但有一些 DOS知识的
人,可采用的方法是:在每一个工作日结束时,使用 DOS
命令COPY,将服务器中所有的数据库文件复制到客户机的
本地硬盘上。一旦发现数据库文件不能打开,使用 DOS命
令COPY,将客户机硬盘上备份的所有数据库文件复制到服
务器中。

  这种方法的优点是简便易行,但缺点也是明显的。这
种方法仅能使数据恢复到上一个工作日的状态,而当天登
录的所有资料将全部丢失,需要重新录入当天的数据。使
用这种方法还要注意,在编写应用软件时,将全部数据库
文件存放在一个独立的子目录中,才能便于操作。

  2、对于FoxPro命令有所了解的人,可采用的方法是
:使用早期的FoxBase+数据库管理系统,对损坏的数据库
文件进行修复。

  早期的FoxBase+系统,在打开数据库文件时,不进
行严格的检查,所以使用FoxBase+系统中的 USE<库文件
名>命令,可打开FoxPro中动态损坏的数据库文件。

  在FoxBase+中,打开损坏的数据库文件之后,使用B
ROWSE命令,可以看到文件中有些记录字段的数值,残缺
不全。多数情况下,这些数值残缺的字段在数据库文件的
尾部。因为在应用软件中,添加新记录的操作多于修改原
有字段的操作。在找到数值残缺的字段之后,使用Delete
命令将这些数值残缺的记录全部删除。用保存修改的方式
退出BROWSE窗口。使用PACK命令对数据库文件进行整理。
这样这个数据库文件就修复了,就可在FoxPro中进行打开
操作了。

  但有时还有一些工作需要进行处理,才能让应用系统
重新正常使用。这包括:

  (1) 如果这个数据库文件有相应的索引文件,应对这
些索引文件重新索引。因为在FoxPro中,每添加一条新记
录时,同时建立这个记录的索引。在数据库文件动态损坏
时,索引文件可能也被损坏。再者,在删除数值残缺的记
录后,会使索引文件与数据库文件不一致。因此,应对相
应的索引文件重新索引。

  如果索引文件为非压缩的‘.IDX’类型,则在FoxBas
e+中可同时打开相应的索引文件。使用REINDEX命令,对
数据库文件重建索引。如果索引文件为其它的类型,则应
在FoxPro中打开相应的索引文件,对其重新索引,因为Fo
xBase+仅支持非压缩的‘.IDX’类型索引文件。当然,
也可不管索引文件的类型,全在FoxPro中对其重新索引。

  (2) 如果损坏的数据库文件对应用软件中数据的一致
性有影响,还应对其它相应的数据库文件进行修改。例如
,在财务软件或库存软件中,对总账文件进行复算等等。


  在上述的整理工作完成之后,整个修复工作结束。这
时,重新运行应用软件,系统就可以正常工作了。
--

※ 来源:.深大荔园晨风站 bbs.szu.edu.cn.[FROM: 202.192.140.138]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店