SQL Server数据库已损坏表的查找和修复
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
表结构损坏,表现方式是软件突然发生“莫名其妙”的问题: 如:如酒店系统的突然不能开房,或不能结账,或不能夜审,或不能查看某一个报表。反正用到某个表的某个功能,就不能操作。 但其他功能一切正常,而且数据库也没有置疑。 过去在ERP管理系统开发的这些年中,处理过几次这种情况。这种问题,单从软件上,很难找到原因。后面几经折腾,才找到原因: 原来是Sqlserver数据库中某一个或几个表损坏。 一般是因为断电、或前台人员强行关机、强行关闭软件(特别是当管理软件正在进行夜审、结算等大量的数据运算时)。 现把处理此情况的方法总结如下,希望对大家有用。 注意:下文中,ZPT_HOTEL_JYB是我所用的数据库名称,应用中,记得替换为实际的数据库名称: 第一步:检查并修复数据库,并找出哪个表损坏。 运行结果如上图。如有表结构损坏,损坏的表名会在“消息”页以红色的方式显示出来。
第二步:修复损坏的表。 根据第一步检查得知损坏的表名(有可能是一个或多个),使用DBCC CHECKTABLE检查和修复表,SQL语句如下(注意:损坏的表名1,损坏的表名2是一个代名称,请替换为实际损坏的表名): ![]() 第三步:再次测试和修复数据库 使用DBCC CHECKDB来进行修复数据库。SQL语名如下:
至此,损坏的表修复成功。 附:特殊情况处理 如果损伤太严重,无法用SQL语名修复。 处理方法一: 把原来的表改名,然后,建立一个同名且表结构完全相同的表,然后从改名后的原表,把数据导入到新建的空表中。 处理方法二: 把原来的表改名,然后,建立一个同名且表结构完全相同的表,然后从最近备份的数据库中,把数据导入到新建的空表中(如此表是业务表,这样有可能会损失一部份最近的数据)。 该文章在 2026/4/10 16:50:59 编辑过 |
关键字查询
相关文章
正在查询... |