今天接到客户一个电话说前段时间购买的用友畅捷通T+V12.0专业版软件出现了问题,报奇怪的错误:8395数据库错误,根据以往的经验,这种奇怪的数据库代码错误一般首先是DBCC checkdb一下,看看有没有数据库一致性错误或者分配错误。
进入 SQL2008R2 数据库,使用DBCC CHECKDB 检测了一下,发现出现了错误,提示:系统表预检查: 对象 ID 7。无法使用闩锁类型 SH 读取并闩锁页 (1:34440)。由于不可修复的错误,CHECK 语句已终止。这个问题怎么办呢?
语句:dbcc checkdb(UFTData26912_000111)
数据库检查后提示信息如下:
消息 7985,级别 16,状态 2,第 1 行
系统表预检查: 对象 ID 7。无法使用闩锁类型 SH 读取并闩锁页 (1:34440)。由于不可修复的错误,CHECK 语句已终止。
UFTData26912_000111的 DBCC 结果。
消息 5233,级别 16,状态 98,第 1 行
表错误: 分配单元 ID 458752,页 (1:34440)。测试(IS_OFF (BUF_IOERR, pBUF->bstat))失败。值是 12716041 和 -6。
CHECKDB 发现有 0 个分配错误和 1 个一致性错误与任何单个的对象都没有关联。
CHECKDB 在数据库 'UFTData26912_000111' 中发现 0 个分配错误和 1 个一致性错误。
1、首先用友小辣妹问了一下客户是不是昨天到今天有异常关机的情况,客户说昨晚出现过异常断电,今天早上开机时还有检测磁盘的那个提示,一开软件就提示前面的错误了?
2、这下不好办了,断电问题数据库出现:无法使用闩锁类型 SH 读取并闩锁页,是非常难搞定的,先用用友数据库置疑修复工具尝试了一下,无效。
3、开始自己用语句进行修复,大概尝试了以下的一些办法:
(1)使用常用语句进行修复,操作语句和截图如下,请大家参考:
alter database UFTData26912_000111 set emergency
alter database UFTData26912_000111 set single_user
dbcc checkdb('UFTData26912_000111',REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb('UFTData26912_000111',REPAIR_REBUILD)
--这条是修复表的语句,后面会用,现在不用执行!dbcc checktable('UFTData26912_000111..ST_RDRecord',REPAIR_ALLOW_DATA_LOSS)
alter database UFTData26912_000111 set multi_user
结论:无效,仍然和之前的提示一样,无法用语句修复了看来,不过用友财务软件免费下载网站并没死心,再看看其他的招有没有。
右击数据库的时候出现下面的提示,很明显看出数据库是存在问题的额:
(2)尝试了一下查询主要的表是什么情况,发下有问题,然后尝试了单表修复,提示信息如下,仍然是修复不了。
消息 829,级别 21,状态 1,第 1 行
数据库 ID 9,页 (1:34440) 已标记为 RestorePending,可能表明磁盘已损坏。要从此状态恢复,请执行还原操作。
消息 5233,级别 16,状态 98,第 1 行
表错误: 分配单元 ID 458752,页 (1:34440)。测试(IS_OFF (BUF_IOERR, pBUF->bstat))失败。值是 12584969 和 -6。
消息 7985,级别 16,状态 2,第 1 行
系统表预检查: 对象 ID 7。无法使用闩锁类型 SH 读取并闩锁页 (1:34440)。由于不可修复的错误,CHECK 语句已终止。
消息 829,级别 21,状态 1,第 14 行
数据库 ID 9,页 (1:34440) 已标记为 RestorePending,可能表明磁盘已损坏。要从此状态恢复,请执行还原操作。
(3)针对所有数据库重建索引也是无效!
最终发现上述方法都没有成功修复好数据,这种情况下只能采取下面的办法了:
(1)查看有没有自动备份的数据,[好在 zzerp 这个客户正好做了备份计划,不过由于昨晚异常关机,只备份到前天的数据]跟客户沟通了一下,客户答应补录2天的数据。
用友软件温馨提醒:备份数据很重要,自动备份最好每天设置2个时间点来备份。
(2)看看有多少表损坏,如果表太多损坏,基本上修复的可能性不大,如果有钱可以找数据修复公司,如果没钱就只能补录数据了。如果表损坏的较少,可以用数据库导入导出工具导出表到新的数据库里继续使用(这种情况一般建议是只有总账+报表模块,如果模块较多还是少用导表的方式。)
如有数据库修复问题解决不了的,可以尝试联系我们的QQ:1820223520,写明是找我进行数据修复的,有偿服务,非诚勿扰,具体价格看具体数据损坏程度进行收费。可先发用友软件的账套数据过来修复,修复好后再付款,没修复好不收任何费用。