一家连锁餐饮企业的信息主管在电话里说得很急:门店收银后台上传订单开始频繁失败,报表有时能出、有时报错。数据库是 SQL Server 2016,跑在三年前的品牌服务器上。远程看日志,反复出现“检测到基于一致性的逻辑 I/O 错误:页校验和不正确”,错误号 824。
这个错误不是网络问题,也不是权限问题,而是数据库读到某个数据页时,算出来的校验和与页头里记录的对不上,也就是这个页在磁盘上已经损坏。它通常伴随硬盘坏道、控制器缓存故障,或非正常断电。刚开始往往只是个别查询失败,如果不处理,坏页会牵连索引和系统页,最终整库不可读。
IT 在网上查到“修复数据库”的命令,先对库做了一次带数据丢失风险的修复,又重启了服务。第一次修复确实让库能打开了,但之后报表数据出现明显缺口,而且坏页数量增加。这里要提醒:带数据丢失的修复命令会丢弃无法读取的页,跑一次就少一批数据,事后无法还原。
第一步,把数据文件、日志文件和现有备份全部取回,先做镜像和快照,保留证据。第二步,把库以只读方式挂到临时环境,跑一致性检查,输出损坏页清单,判断是索引页损坏还是数据页损坏。第三步,对数据页逐页尝试提取可用行,能读的行一条不留;对索引页损坏的部分,先重建索引,再回查基表。第四步,把客户每周完整备份与每日差异备份做页级比对,凡是被修复命令丢弃的行,用备份里的版本补回来,其他更新的记录以当前数据为准。第五步,把清理干净的库导出,新建实例导入,重建索引、校验约束,交客户做业务对账。
订单、会员、券码核销数据全部恢复,极少量因修复命令被丢弃的行由备份补齐,业务对账通过。我们还帮客户把运维习惯改了三处:把页校验和与一致性检查排进每周夜间任务;备份保留从一周延长到一个月,并同步一份到异地;服务器硬盘 SMART 告警纳入监控,预警就换盘。
SQL Server 出现 823、824、置疑状态,处理顺序比工具重要。拿不准就先停库保留现场,打 0755-83775551 免费检测。深圳市补天时代科技有限公司专注数据恢复二十余年,累计恢复硬盘2万个、服务器及存储3000台,数据库修复恢复流程按规范执行、可追溯。地址:深圳市福田区华强北深南中路2070号电子科技大厦A座35楼。