服务热线:

4006-6500-28

新闻资讯
联系我们

电话:400-665-0028


您当前位置:首页 > 新闻资讯  > 知识学习 > 正文知识学习
数据库损坏及简单修复方式介绍
添加时间:2023-2-6

【问题描述】

账套进入提示无效过程调用或参数、数据库可疑(数据库置疑)、点击某功能报错系统会异常退出等数据库损坏的报错。


【场景介绍】

问题描述中的报错都有可能是数据库损坏,数据库损坏的最常见原因就是断电,但不代表没有断电就不会引起数据库损坏,还有可能是磁盘坏道、病毒或某些异常原因导致的。

数据库损坏一般分为轻度损坏和严重损坏,轻度损坏可以通过 sql server自带的修复语句进行修复,严重损坏则是需要通过导库的方式,从数据库中将损坏账套的数据导入到一个新的账套中。下面将介绍轻度损坏的修复方式。


【解决方案】

1、先将所有客户端关闭,关闭后打开数据库,在数据库中将数据库设置为单用户模式,具体路径是选中有问题的数据库,右键-属性-选项-限制访问,将MULTI_USER改成SINGLE_USER。



2、修改后,执行语句dbcc checkdb('数据库名'),如dbcc checkdb('AIS201407281201391'),检测数据库损坏程度。看右下角的执行情况分析数据库损坏程度,损坏程度如下:
绿色:数据库没有损坏

黄色:数据库轻度损坏

红色:数据库严重损坏



3、检测后,如果是轻度损坏,则需要执行以下语句进行修复:
dbcc checkdb('数据库名','repair_allow_data_loss')

如:dbcc checkdb('AIS201407281201391','repair_allow_data_loss')

执行该语句后,拉到结果最下方,会有“发现N个分配错误和M个一致性错误”和“修复N个分配错误和M个一致性错误”的结果,如果错误全部修复完成,则数据库已进行了修复。如果仍有部分错误没有修复,则需要再执行修复语句,直至修复完成。


4、重新执行dbcc checkdb('数据库名'),如果结果为绿色,则已成功修复数据库。

5、修复完成后,将单用户模式重新修改回多用户模式,可在属性中进行修改,也可以执行以下语句进行修改:

alter database 数据库名 set multi_user

如:alter database AIS201407281201391 set multi_user

重新改为多用户模式后,重新打开软件。即可对账套正常进行使用。


【注意事项】

正式账套执行脚本前请先做好备份,建议待在测试账套中核实无误后再在正式账套中执行。