LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL Server数据库已损坏表的查找和修复

admin
2026年4月10日 16:46 本文热度 49

    表结构损坏,表现方式是软件突然发生“莫名其妙”的问题:

    如:如酒店系统的突然不能开房,或不能结账,或不能夜审,或不能查看某一个报表。反正用到某个表的某个功能,就不能操作。

    但其他功能一切正常,而且数据库也没有置疑。

    过去在ERP管理系统开发的这些年中,处理过几次这种情况。这种问题,单从软件上,很难找到原因。后面几经折腾,才找到原因:

    原来是Sqlserver数据库中某一个或几个表损坏。

    一般是因为断电、或前台人员强行关机、强行关闭软件(特别是当管理软件正在进行夜审、结算等大量的数据运算时)。

    现把处理此情况的方法总结如下,希望对大家有用。

    注意:下文中,ZPT_HOTEL_JYB是我所用的数据库名称,应用中,记得替换为实际的数据库名称

第一步:检查并修复数据库,并找出哪个表损坏。

use master

go


---检查数据库错误并修复

DBCC CHECKDB ('ZPT_HOTEL_JYB')

go

    运行结果如上图。如有表结构损坏,损坏的表名会在“消息”页以红色的方式显示出来。

第二步:修复损坏的表。

    根据第一步检查得知损坏的表名(有可能是一个或多个),使用DBCC CHECKTABLE检查和修复表,SQL语句如下(注意:损坏的表名1,损坏的表名2是一个代名称,请替换为实际损坏的表名):

Use master

go

exec sp_dboption 'ZPT_HOTEL_JYB', 'single user', 'true' --启用单用户

go

use ZPT_HOTEL_JYB

go

--修复SQLSERVER数据库的系统表

dbcc checktable('sysobjects',repair_allow_data_loss)

go

-------开始 修复业务表   -----

dbcc checktable('损坏的表名1',repair_allow_data_loss)

dbcc checktable('损坏的表名2',repair_allow_data_loss)


-------开始 修复业务表  -----

go

--恢复原样启用多用户

Use master

go

exec sp_dboption 'ZPT_HOTEL_JYB', 'single user', 'false' --启用多用户

go

第三步:再次测试和修复数据库

    使用DBCC CHECKDB来进行修复数据库。SQL语名如下:

use master

go


---检查数据库错误并修复

DBCC CHECKDB ('ZPT_HOTEL_JYB')

go

    至此,损坏的表修复成功。

附:特殊情况处理

    如果损伤太严重,无法用SQL语名修复。

处理方法一:

    把原来的表改名,然后,建立一个同名且表结构完全相同的表,然后从改名后的原表,把数据导入到新建的空表中。

处理方法二:

    把原来的表改名,然后,建立一个同名且表结构完全相同的表,然后从最近备份的数据库中,把数据导入到新建的空表中(如此表是业务表,这样有可能会损失一部份最近的数据)。


该文章在 2026/4/10 16:50:59 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-2  粤公网安备44030602007207号