在SSMS中,对表操作,有时候会在结果消息栏提示很多红字错误。
- Symptom:在SSMS中,对表操作,有时候会在结果消息栏提示:
SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确(应为: 0x87a5fa60,但实际为: 0x9831fdf4)。在文件 'X:\Mydb\Orders_1.ndf' 中、偏移量为 0x00000010962000 的位置对数据库 ID 10 中的页 (3:33969) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。 - RootCause:可能对表的操作异常中断,导致此表存储出现异常,部分页无法正常调用。
- Resolution:通过DBCC CHECKDB命令进行修复。
- 如果库内容比较少,或者库中多个表存在异常,可通过整个库进行操作:
use [DBname]
go
ALTER DATABASE [DBname] SET SINGLE_USER
DBCC CHECKDB([DBname], repair_allow_data_loss) with NO_INFOMSGS
go
ALTER DATABASE [DBname] SET MULTI_USER
go
-
- 如果库内容比较多,或者确认只有之中的个别表存在异常,可仅对表进行操作:
use [DBname]
go
ALTER DATABASE [DBname] SET SINGLE_USER
DBCC CHECKTABLE ([TableName], repair_allow_data_loss) with NO_INFOMSGS
go
ALTER DATABASE [DBname] SET MULTI_USER
go
注意:
- 绿色库名,表名根据实际修改。
- 由于需要切换数据库为SINGLE_USER模式,如果长时间无法运行完成,可能切换出现了问题,建议重启sql server服务。正常情况下语句切换几分钟过就可以修复完毕。
use [DM_Customer]
go
ALTER DATABASE [DM_Customer] SET SINGLE_USER
DBCC CHECKTABLE([UserCounterFY14-15], repair_allow_data_loss) with NO_INFOMSGS
go
ALTER DATABASE [DM_Customer] SET MULTI_USER
go