|
数据库报“可疑”的数据时候,我第一反应是解决骂娘。然后才想起该查日志。数据 那天凌晨两点,解决客户电话打过来,数据说财务系统连不上库。解决我远程一看,数据SQL Server里那个库的解决状态栏赫然写着“Suspect”。数据文件还在,数据日志文件也还在,解决但SQL Server就是数据拒绝启动它。典型的解决“可疑”状态。 多数人这时候会慌,数据直接去网上搜“数据库可疑修复”,解决然后下载一堆乱七八糟的数据工具。别急。先搞明白一件事:所谓“可疑”,其实是SQL Server在启动恢复过程中发现日志链断裂或数据页校验失败,主动把库标记为不可用,防止你读到坏数据。这是保护机制,不是判死刑。 第一步,把库设为紧急模式。在SSMS里执行: 我那次遇到的情况,是磁盘坏道导致日志文件物理损坏。CHECKDB报错说“无法读取日志记录”。这时候单靠SQL Server自身恢复已经不可能,需要手动重建日志文件。做法是:先 如果数据文件本身也坏了,事情就麻烦些。你得用 还有个偏方,针对那种“假可疑”。有时候库状态可疑,但日志文件其实没坏,只是SQL Server在恢复时被某些锁卡住了。先重启SQL Server服务,如果还不行,试试 最后说句实在话。修复可疑数据库,最核心的不是技术,是你有没有备份。有备份,一切好说,恢复点就行。没备份,你就是在跟磁盘上的残骸搏斗,赢了是运气,输了是常态。我那次折腾到天亮,总算把库拉起来了,但丢了当天下午三个小时的交易数据。客户没骂我,因为那三个小时的数据他们自己也拿不出记录。 事后我把那个库的日志备份间隔从每天一次改成每十五分钟一次。麻烦是麻烦点,但总比凌晨两点接电话强。 |
