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

SQLSERVER数据库置疑的修复,用SQL语句修复置疑数据库

admin
2026年4月13日 23:24 本文热度 56

SQLSERVER数据库,在断电或文件损伤等原因,容易置疑,这是国内管理软件商比较头疼的问题。

我在ERP管理系统的开发与服务客户的这十多年中,处理过的数据库置疑的情况,应该有几十次之多。

至于原因嘛,一是因为服务的客户量大;二是各地代理商遇到数据库置疑搞不定,也提交到我这里,让我来处理;三是因为时间跨度长。

SQL SERVER 2005或之前的版本(特别是SQL SERVER 2000),导致置疑的情况比较多,SQL SERVER 2008以后遇到少一些,但时不时也偶然会遇到。

当发生数据库置疑后,最简单的修复办法,就是重建数据库的日志文件,把置疑问的数据库修复为不置疑。

这是我在ERP软件给客户服务时,常使用的数据库置疑修复用的方法,分享给大家,希望对大家有用。

(注意:下面的SQL语名中的“ZPT_HOTEL”,表示是我要修复的数据库的名称,实际应用中,要替换为实际置疑的数据库名)

第一步:修复数据库置疑

--首先、打开master库

use master

GO

--第一、打开修改系统表的开关

exec sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE

GO

--第二、设置数据库状态

update sysdatabases set status=32768 where name='ZPT_HOTEL'

GO

--第三、重建LDF文件

DBCC REBUILD_LOG ('ZPT_HOTEL','c:\ZPT_HOTEL_NewLog_log.ldf')

GO

注意:c:\ZPT_HOTEL_NewLog_log.ldf是新日志文件的存放路径和文件名,可以根据实际情况,自行设置。新建的日志文件的存放路径,建议和原数据库存放在同一个文件夹。文件名不要和原日志文件的名称相同,否则会报错。如在此实际中,原日志文件的名是ZPT_HOTEL_Log_log.ldf,我新建的日志文件名是:ZPT_HOTEL_NewLog_log.ldf

本例中,新建立日志文件存于C盘,语句运行后,会在C盘新增加一个文件名。

--第四、重置数据库状态

update sysdatabases set status=0 where name='ZPT_HOTEL'

GO

--第五、恢复数据库

restore database ZPT_HOTEL WITH RECOVERY

GO

--第六、关闭打开修改系统表的开关

exec sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE 

GO

至此,数据库修复置疑完成。数据库此时,已显示为正常状态。

第二步:数据库的检测和修复

数据库不再置疑后,并不等于就万事大喜。还要进行数据库的检测和修复。

数据库的检测和修复SQL如下:

(注意:下面的SQL语名中的“ZPT_HOTEL”,表示是我要修复的数据库的名称,实际应用中,要替换为实际置疑的数据库名)。

use ZPT_HOTEL

go

DBCC CHECKDB('ZPT_HOTEL')---检查数据库错误并修复

go

数据库的检测和修复SQL,建立运行两次或三次,看检测结果,没有问题就可以了(如修复结果,没有红字,就基本表示OK了)

​至此,数据库置疑的修复完工。

附录:

如连续进行3次的数据库的检测和修复,还有错误(错误显示为红色的字),看一下是哪个表导致的,就针对此表进行修复。则进入下面的第三步。

第三步:表结构损坏的修复

假设在上面的数据库的检测中,显示有某个表损坏,还要再对此表进行修复,否则即使管理系统能登录和进行某些操作,但在用到此表的功能时,也会有问题,或容易导致数据库再次置疑。

例如,显示kf_Rep782 损坏了,则运行下面的SQL语名,对kf_Rep782进行修复

下面是修复kf_Rep782表的SQL:

use ZPT_HOTEL

go


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

dbcc checktable('sysobjects',repair_allow_data_loss)

go

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

dbcc checktable('kf_Rep782',repair_allow_data_loss)--修复业务表kf_Rep782


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

go

--恢复原样启用多用户

Use master

go

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

go

USE MASTER;

go

ALTER DATABASE ZPT_HOTEL_JYB SET MULTI_USER

go

修复后,再对数据库进行一次数据库的检测和修复就可以了。

数据库的检测和修复SQL和上次相同(修设数据库名是:ZPT_HOTEL)。

useZPT_HOTEL

go


DBCCCHECKDB('ZPT_HOTEL')---检查数据库错误并修复

go


阅读原文:原文链接


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