SQLSERVER数据库置疑的修复,用SQL语句修复置疑数据库
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
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”,表示是我要修复的数据库的名称,实际应用中,要替换为实际置疑的数据库名)。 数据库的检测和修复SQL,建立运行两次或三次,看检测结果,没有问题就可以了(如修复结果,没有红字,就基本表示OK了) 至此,数据库置疑的修复完工。 ![]() 附录: 如连续进行3次的数据库的检测和修复,还有错误(错误显示为红色的字),看一下是哪个表导致的,就针对此表进行修复。则进入下面的第三步。 第三步:表结构损坏的修复 假设在上面的数据库的检测中,显示有某个表损坏,还要再对此表进行修复,否则即使管理系统能登录和进行某些操作,但在用到此表的功能时,也会有问题,或容易导致数据库再次置疑。 例如,显示kf_Rep782 损坏了,则运行下面的SQL语名,对kf_Rep782进行修复。 下面是修复kf_Rep782表的SQL: 修复后,再对数据库进行一次数据库的检测和修复就可以了。 数据库的检测和修复SQL和上次相同(修设数据库名是:ZPT_HOTEL)。 阅读原文:原文链接 该文章在 2026/4/14 15:35:08 编辑过 |
关键字查询
相关文章
正在查询... |