一、用Pctools、NU的Diskedit等工具软件进行恢复:
----运行Pctools,选中无法打开的数据库,按E文件进入编辑功能,按F1切换显示模式。
----按F3进行编辑,将开始的第5个字节值减1,按F5存储,然后退出Pctools,启动VFP,
发现被破坏的数据库可以打开使用了。
----由于许多 *** 作者并不一定熟悉如何使用Pctools,因此我建议大家可以用比较熟悉的Excel程序根据下面的步骤来进行数据库的恢复。
二、用Excel进行恢复。
----启动Excel,选择"打开"按钮,出现打开对话框,在打开文件类型中选择Dbase/VFP(DBF)文件类型,再选中被破坏的数据库打开,这时不要做更改,只选择"保存"按钮,会出现"另存为"对话框,仍选择以原来文件名保存,会提示"文件已经存在,是否替换已有文件?",选择"是"。
----然后选择"文件"菜单上的"关闭",会出现提示"数据库文件不是Excel格式,要保留修改吗?
----要保存为Excel格式,单击'是',然后在'保存类型'下拉列表框选'Excel工作簿';
----要用现有格式保存并替换原来的文件,单击'是',然后单击'保存';
----要在关闭文件时维持现有格式并不作保存,单击'否'。"
----由于我们并没有对数据库的记录进行改动,只是为了恢复数据库,所以选择最后一项"在关闭文件时维持现有格式并不作保存",因此单击"否",退出Excel。
----启动VFP,再次打开数据库文件,发现数据库文件已可以被打开了,但是观察数据库的结构,会发现数据库结构中的索引不见了,不过数据库的索引文件还存在。我们只需要给数据库Add索引,并选择原来的索引文件Open即可。
----添加索引文件后退出数据库结构设置,并对数据库重新索引一下,就可以继续使用原
来被破坏的数据库了。
三、如果是VFP6的DBF,那么用VFP8打开试一试。如果是VFP8的DBF,那么用VFP6打开试一试
可以使用语句检查表。如果结果的msg_text部分是好的,那么你的表是健康的。反之,则表明mysql数据库中的表有损坏。另外有些厉害的高手一额可以通过运行脚本来检测。
MyISAM 表可以采用以下方法进行修复 :使用 reapair table 或myisamchk 来修复。如果修复无效,采用备份恢复表。
阶段1 :检查你的表
如果你有很多时间,运行myisamchk MYI 或myisamchk -e MYI 。使用-s (沉默)选项禁止不必要的信息。如果mysqld 服务器处于宕机状态,应使用--update-state 选项来告诉myisamchk 将表标记为' 检查过的' 。
你必须只修复那些myisamchk 报告有错误的表。对这样的表,继续到阶段2 。如果在检查时,你得到奇怪的错误( 例如out of memory 错误) ,或如果myisamchk 崩溃,到阶段3 。
阶段2 :简单安全的修复
注释:如果想更快地进行修复,当运行myisamchk 时,你应将sort_buffer_size 和Key_buffer_size 变量的值设置为可用内存的大约25% 。
首先,试试myisamchk -r -q tbl_name(-r -q 意味着“ 快速恢复模式”) 。这将试图不接触数据文件来修复索引文件。如果数据文件包含它应有的一切内容和指向数据文件内正确地点的删除连接,这应该管用并且表可被修复。开始修复下一张表。否则,执行下列过程:
在继续前对数据文件进行备份。使用myisamchk -r tbl_name(-r 意味着“ 恢复模式”) 。这将从数据文件中删除不正确的记录和已被删除的记录并重建索引文件。
如果前面的步骤失败,使用myisamchk --safe-recover tbl_name 。安全恢复模式使用一个老的恢复方法,处理常规恢复模式不行的少数情况( 但是更慢) 。如果在修复时,你得到奇怪的错误( 例如out of memory 错误) ,或如果myisamchk 崩溃,到阶段3 。
阶段3 :困难的修复
只有在索引文件的第一个16K 块被破坏,或包含不正确的信息,或如果索引文件丢失,你才应该到这个阶段。在这种情况下,需要创建一个新的索引文件。按如下步骤 *** 做:
把数据文件移到安全的地方。使用表描述文件创建新的( 空) 数据文件和索引文件:
shell> mysql db_name
mysql> SET AUTOCOMMIT=1;
mysql> TRUNCATE TABLE tbl_name;
mysql> quit
如果你的MySQL 版本没有TRUNCATE TABLE ,则使用DELETE FROM tbl_name 。将老的数据文件拷贝到新创建的数据文件之中。回到阶段2 。现在myisamchk -r -q 应该工作了。你还可以使用REPAIR TABLE tbl_name USE_FRM ,将自动执行整个程序。
阶段4 :非常困难的修复
只有frm 描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。
从一个备份恢复描述文件然后回到阶段3 。你也可以恢复索引文件然后回到阶段2 。对后者,你应该用myisamchk -r 启动。
如果你没有进行备份但是确切地知道表是怎样创建的,在另一个数据库中创建表的一个拷贝。删除新的数据文件,然后从其他数据库将描述文件和索引文件移到破坏的数据库中。这样提供了新的描述和索引文件,但是让MYD 数据文件独自留下来了。回到阶段2并且尝试重建索引文件。
数据库损坏,修复的书本名称有《SQLServer2012数据库恢复实战》,《MySQL数据库故障排除与恢复》,《Oracle数据库故障排除与恢复》。
1、《SQLServer2012数据库恢复实战》:该书从实践出发,介绍了SQLServer2012数据库损坏的原因、分类、诊断和修复方法,详细讲解了如何使用备份和日志来恢复数据库,以及如何使用工具来修复损坏的数据库。
2、《MySQL数据库故障排除与恢复》:该书详细介绍了MySQL数据库的故障排除和恢复,包括如何诊断和修复各种常见的数据库问题,如数据丢失、损坏和不一致等。
3、《Oracle数据库故障排除与恢复》:该书从Oracle数据库的体系结构出发,介绍了如何诊断和修复各种常见的Oracle数据库问题,包括数据块损坏、表空间故障等。
1停止SQL Server的服务,备份SQL Server安装目录下的\data子目录
下故障数据库的两个文件,一个数据文件hbposv6_branch_datamdf,
一个hbposv6_branch_logldf(也有可能非此命名),同时查看磁盘
空间是否有足够的空间;
ORDER BY NAME把查询的结果集全部复制下来,新建一个文本文件取名为“导出bat”把结果集复制进去并保存,把该文件存放在d盘目录下。2在查询分析器中选择思迅数据库运行:
select 'bcp 问题数据库'+name + ' IN '+'d:\testdb\'+name+'txt -c -Usa -S服务器名小写 -P ' FROM SYSOBJECTS WHERE TYPE = 'U'
ORDER BY NAME
把查询的结果集全部复制下来,新建一个文本文件取名为“导入bat”把结果集复制进去并保存,把该文件存放在d盘目录下。3运行“导出bat”(注意:该文件双击即可运行),数据库中的数据会倒出到TESTDB目录中。4删除原来的问题数据库,重新建立新的数据库。5在查询分析器中选择思迅数据库运行:
select 'delete '+name FROM SYSOBJECTS WHERE TYPE = 'U'
然后把返回的结果集复制,新建一个查询分析器窗口,把复制的内容粘贴下运行!6最后运行“导入bat” ,倒入成功后就恢复数据库了!7最后在查询分析器中选择思迅数据库运行
use hbposv5goupdate t_sys_system set sys_var_value=(select max(flow_id) from t_im_flow where num2=1) where sys_var_id='ioflow_pointer'
go8日结,检查数据。注意:a请根据语句中的汉字提示,进行修改对应内容。如:语句中的“问题数据库”,修改为hbposv5
修复MYSQL数据库因断电造成的数据损坏在使用MySQL数据库的时候,都碰到过因断电造成数据库损坏的情况,大家都知道,断电或非正常关机是导致MySQL数据库出现错误最常见的原因,如何恢复MySQL数据库是大家都非常头痛的问题。目前有方法可以帮助大家恢复损坏的MySQL数据库吗?当用户出现断电造成的MySQL数据库丢失损坏时,如果能进入MySQL软件,但是提示错误信息,用户可以通过“系统维护”—“数据库压缩修复”,压缩下数据库(有些软件在“系统设置”—“系统维护”—“数据库备份恢复”中),这种方法只适合一小部分的数据库故障修复,功能性并不高。现在网络上有两种比较推荐使用的MySQL数据库恢复方法,一种方法使用MySQL(和PHP搭配之最佳组合)的check table和repair table 的sql语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchk, isamchk数据检测恢复工具。在很多用户看来,这两个方法都比较复杂,并不适合大多数的用户使用。另外,这两种方法并不能有效的恢复MySQL数据库,可能还会造成数据库被进一步损坏,造成大家无法挽回的损失。根据以上几个原因,这两种MySQL数据库恢复方法并不建议大家使用。。数据库被损坏分以下几种情况:1、严重损坏2、轻度损坏3、有些表被损坏或有些表的部分记录被损坏如何修复MYSQL数据库因断电造成的数据损坏
aess提供了压缩和修复数据库功能,可尝试用该功能修复,以aess2010为例方法如下:
1、启动aess2010,点击数据库工具选项卡--压缩和修复数据库命令;
2、浏览窗口选定要修复的数据库,点击打开;
3、输入修复后数据库的名称,点击保存;
4、打开修复后的数据库,查看修复效果。
以上就是关于如何解决dbc数据库文件破坏问题全部的内容,包括:如何解决dbc数据库文件破坏问题、怎么查看mysql数据库中的表是否损坏、数据库损坏,如何修复的书本名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)