SQL SERVER数据库修复

来源:互联网 发布:苏州seo关键词优化 编辑:程序博客网 时间:2024/04/29 11:04

数据库错误如下:

消息 824,级别 24,状态 2,第 2 行
SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确(应为 1:143744,但实际为 24490:1539394346)。在文件 'E:\数据库\ET.mdf' 中、偏移量为 0x00000046300000 的位置对数据库 ID 14 中的页 (1:143744) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书


解决方式如下:

出现上述问题的原因大致为高速读写的时候出现了中断等现象导致的一致性问题,最直接的做法就是忽略此不一致,当然修复后会有少数数据丢失。修复基本步骤为三个环节,第一是将对应的数据库改为单用户,第二步是通过DBCC CHECKDB忽略不一致,第三步则修改数据库为多用户。基本没有问题,可是仍然会有意外,所以在操作之前自己做好打算。

第一步:使用ManagementStudio连接数据库将其改为单用户;

执行查询语句

ALTER DATABASE database_name SET SINGLE_USER
如果此时有很多连接,那么此操作异常慢,有的人则写存储过程将连接都关闭,确实可行,可是有最简便的方式,如下图:

找到如下图位置:


确定之后就会弹出框让你确定是否关闭所有连接,如下:


确定即可,很快就好了。

第二步:执行检查,下面的SQL是本人常用的,目前没有问题,可能不同的场景用法不一样。

DBCC CHECKDB ('database_name', repair_allow_data_loss) with NO_INFOMSGS

操作完成后即可恢复多用户操作了。

第三步:恢复为多用户

ALTER DATABASE database_name SET MULTI_USER
这一步基本没有问题,因为前面是单用户访问,如果有另外一个连接不小心连接进来,那么你就无法操作了,因为已经有一个连接。常用的做法是强制杀掉那个连接,同样有部分人可能会写存储过程,然而我不想在生成环境做过多的尝试,所以用ManagementStudio自带的活动和监视器去做。打开ManagementStudio操作如下:


点开活动和监视器后进入:


选中对应的数据库,右键出现如下:


终止进程就杀死了那个单用户的占用了,后就可以执行你的多用户修改语句了。

到此为止操作成功,不过不同的环境和出错的原因不一致,如要操作还是要慎重的。祝好运

0 0