昨天客户的程序完成,让客户测试用了三个月没什么问题。
数据备份什么都没问题。
眼看要结账了,无意中打开数据库,发下浏览表的时候出现
SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确(应为: 0xd4eae74b,但实际为: 0xd4eb674b)。在文件 'D:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/Vmanage.mdf' 中、偏移量为 0x000000005be000 的位置对数据库 ID 7 中的页 (1:735) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。
出现这种错误。客户直接说使程序原因。自己虽然直到不是程序的原因,但心里没底,没有遇到过这种问题。只好网上查资料了。大部分说是硬盘坏了,但是我感觉此问题是由于数据库操作的时候出现突然断电或关机造成的数据库与事物上的不一致。于是找到了网上的解决方法
use 【Vmanage】
go
ALTER DATABASE Vmanage SET SINGLE_USER 设置为单用户
DBCC CHECKDB (Vmanage, repair_allow_data_loss) with NO_INFOMSGS 允许丢失错误
go
ALTER DATABASE Vmanage SET MULTI_USER 设置为多用户
go
执行通不过,错误信息
消息 8921,级别 16,状态 1,第 3 行
检查已终止。收集事实数据时检测到错误。可能是 tempdb 空间用尽或某个系统表不一致。请检查前面的错误消息。
消息 824,级别 24,状态 2,第 3 行
我这里只有备份,看不到他的tempdb。而且是由于mdf错误,所以删除日志文件这条路也是行不通的。
但是让我发下数据库可以执行sql的查询命令,所以。我想是由于个别表的错误造成整体不能用。于是我用数据对拷,我用另一台机器装上sql数据库,新建数据表Vmanage,然后导入数据,当表(不要选视图表)全选之后他会弹出具体那个表错误,把错误的表先去掉选择,然后数据导入成功。然后根据以前的备份,恢复错误的表。
终于搞定,希望对大家有所帮助。