转自:http://lcj240856742.blog.163.com/blog/static/65675342008268474915/
答案一: 假设 kmjx 为被置疑的数据库。
5.把数据库设成紧急状态:
在SQL查询分析器中逐条执行以下语句
sp_configure 'allow',1
reconfigure with override
update sysdatabases set status=32768 where name='kmjxc'
6.重建日志文件(请将路径换成你的数据文件路径)
其中“D:\MSSQL$PROD\Data\”为存放数据库文件的路径
“KMJXC_log.ldf”为一个新的不存在的文件,在执行以下语句时将自动建立
dbcc rebuild_log('kmjxc','D:\MSSQL$PROD\Data\KMJXC_log.ldf')
7.逐条执行以下语句,取消紧急模式
update sysdatabases set status=0 where name='kmjxc'
restore database kmjxc with recovery
sp_configure 'allow',0
reconfigure with override
8.重起sql server
先做上面的步骤了,不行再执行下面的步骤,
1、在SQL查询分析器中执行以下语句:(注以下所用的dbname为数据库名称,请客户手工改为自己的数据库名)
use dbname
dbcc checkdb
2、查看查询结果,有很多红色字体显示,最后结果有这样的提示:
CHECKDB 发现了x个分配错误和 x 个一致性错误(在数据库 'dbname' 中)。
一般情况下,引起分配错误的原因是磁盘损坏或突然停电;一致性错误可能是数据库中的表或索引坏,一般都可修复。
3、查看红色字体,并把有错误的数据库表名记录下来,或把索引损坏的表名记录下来。
4、把数据库设置为单用户模式,直接在查询分析器中执行以下语句即可:
EXEC sp_dboption 'dbname', 'single user', 'TRUE'.
5、进入查询分析器执行如下语句:
use kmjxcv3
dbcc checkdb(’dbname’,repair_allow_data_loss)-------修复数据库
dbcc checkdb ('dbname',REPAIR_REBUILD)----------------修复数据库索引
6、再执行:dbcc checkdb,检测数据库,出现结果为:
CHECKDB 发现了0个分配错误和 0个一致性错误(在数据库 'dbname' 中)。
数据库已经修复完毕。
7、取消单用户模式,即直接在查询分析器中执行以下语句即可:
EXEC sp_dboption 'dbname', 'single user','FALSE'
答案二:
lddl单位的SQL2000的MSDB数据库,因为不正常关机,成了置疑状态,怎么弄都不行,后在网上查到以下的修复代码:
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1
RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='msdb'
Go
sp_dboption 'msdb', 'single user', 'true'
Go
DBCC CHECKDB('msdb')
Go
update sysdatabases set status =28 where name='msdb'
Go
sp_configure 'allow updates', 0
reconfigure with override
Go
sp_dboption 'msdb', 'single user', 'false'
Go
方法三:
数据库系统出现严重问题,msdb 数据库置疑 本人解决方案
问题背景:
操作系统: WINDOWS 2000 SERVER + SP4
数据库系统: MS SQL SERVER 2000 ENTERPRISER + SP3
问题表现:
msdb 数据库和本人所建的另一个数据库MARK出现置疑,MS SQL SERVER 2000中系统中该在的文件都还在,但是msdb 数据库和MARK数据库置疑,点击显示无文件。
解决问题要达到的目标:
其中,MARK数据库是本人开发的一个C/S成绩管理系统所用的数据库,现正为学校期中考试过后,期中成绩正在录入,而且,每天的数据库不一样,该数据库有备份, 但是前一天的。若强行恢复,只怕丢失今天上午的数据,最好要做到,所有成绩都要不要丢失
MARK数据库解决过程
1:MARK数据库,该数据库虽然出现置疑,但很容易解决。
先停止整个数据库,将该数据库的文件mark_Data.MDF 和mark_Log.LDF拷贝粘贴出来。
2:从企业管理器中将MARK数据库删除。
3:将备份好的数据库文件复制过来原先的目录下。
4:选择 数据库右击鼠标 --》所有任务--》附加数据库 之后依照操作完成数据库的附加。
5:MARK数据库能够正常工作,解决了MARK数据库置疑的过程。
6:使用成绩管理系统,发现能够正常使用。
7:第一个问题解决
注:以上过程中,由于MSDB数据库也处于置疑的过程中,会出现几次错误提示,不用理会。一般说来是可以成功的
MSDB数据库解决过程
难点:由于MSDB数据库不能删除,将其文件拷出来,再次附加数据库,但新的附加数据库不能叫MSDB,也就是不能同名,遇到了困难。
1:先停止整个数据库,将该数据库的文件msdbdata.mdf和msdblog.ldf拷贝粘贴出来到另一个目录下。
2:将以上的文件再拷贝到另一个目录下,也就是说复制两次。
3:选择 数据库右击鼠标 --》所有任务--》附加数据库 将复制出的一个备份文件附加上去,其中,数据库名称叫MSDB1,用户是SA或ADMINISTRATOR。
4:将MSDB1数据库备份,备份成一个文件,当时我的叫MSDB。BAK。
5:选择置疑的数据库MSDB,选择恢复数据库,将刚才备份出来的数据库强行恢复到MSDB。
6:问题解决,MSDB库又能正常使用。
完成后赶快将数据库再次备份一次。呵呵