【网学网提醒】:网学会员,鉴于大家对SqlServer数据库被置疑解决方法十分关注,会员在此为大家搜集整理了“SqlServer数据库被置疑解决方法”一文,供大家参考学习!
首先确认已经备份了.mdf和.ldf文件。
2.在SQLServer中新建一个同名的数据库,然后停止SQLServer服务。
3.用原有的.mdf和.ldf文件覆盖新建数据库对应的.mdf和.ldf文件。
4.重新启动SQLServer服务,这是应该会看到这个数据库处于置疑(Suspect)状态。
5.在SQL查询分析器中执行以下命令,以允许更新系统表:
usemaster
go
sp_configure‘allowupdates’,1
reconfigurewithoverride
go
6.将这个数据库置为紧急模式:
updatesysdatabasessetstatus=32768wherename='db_name'
go
7.使用DBCCCHECKDB命令检查数据库中的错误:
DBCCCHECKDB(‘db_name’)
GO
8.如果DBCCCHECKDB命令失败,请转至第10步,否则先将数据库置为单用户模式,再尝试对其进行修复:
sp_dboption'db_name',’singleuser’,’true’
DBCCCHECKDB(‘db_name’,REPAIR_ALLOW_DATA_LOSS)
GO
如果在执行DBCCCHECKDB(‘db_name’,REPAIR_ALLOW_DATA_LOSS)命令时提示说数据库未处于单用户模式状态的话,则重新启动SQLServer服务,然后继续尝试。
9.如果DBCCCHECKDB(‘db_name’,REPAIR_ALLOW_DATA_LOSS)命令失败,请转至第10步,否则若成功修复了数据库中的错误:
重新执行DBCCCHECKDB(‘db_name’)命令,确认数据库中已没有错误存在。
清除数据库的置疑状态:sp_resetstatus'db_name'
清除数据库的单用户模式状态:sp_dboption'db_name',’singleuser’,’false’
重新启动SQLServer服务,如果一切正常的话,则数据库已经成功恢复。
10.如果以上步骤都不能解决问题的话,请参考附件中的文档尝试通过重建事务日志来恢复数据库中的数据。
如果您只有MDF文件,问题就更加复杂一些,我们需要直接重建事务日志了:
1.在SQLServer中新建一个同名的数据库,然后停止SQLServer服务。
2.用原有的ldf文件覆盖新建数据库对应的.mdf文件,将其日志文件(.ldf)删除。
3.启动SQLServer服务,并将数据库置为紧急模式(同上:步骤5和步骤6)。
4.停止并重新启动SQLServer服务。
5.执行以下命令重建数据库日志文件:(下面是个示例,您要用您实际的数据库名)
DBCCREBUILD_LOG(’cas_db’,'D:\cas_db\cas_db_Log.LDF')
6.重新将该数据库置为单用户模式。
SqlServer数据库被置疑解决方法
环境win2000sqlserver2k
问题:数据库进行一般更新查询的时候,突然被“置疑”无法继续使用
自己进行了一下处理不能解决问题:
1、关闭sqlserver数据库,将对应数据库的.mdf.ldf文件移到其它目录下,删除原有数据库
2、启动sqlserver数据库,新建一个同名数据库,
3、关闭sqlserver数据库,用原数据库的.mdf.ldf文件覆盖现新建数据库对应文件。问题依旧存
在,没用。
通过在网上查找资料并成果解决问题:
1、关闭sqlserver数据库,将被置疑的数据库文件(.mdf.ldf)拷出来备份。
2、开启sqlserver数据库,新建一个同名数据库,
3、关闭sqlserver数据库,用备份的.mdf文件覆盖新的数据库的同名文件
4、开启sqlserver数据库,在“查询分析器”中执行以下语句,允许对系统目录直接修改
usemaster
go
sp_configure'allowupdates',1
go
reconfigurewithoverride
go
updatesysdatabasessetstatus=-32768wheredbid=DB_ID('newdb')
5、对新建数据库进行重建log
dbccrebuild_log('newdb','C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\newdb_log.ldf')
处理完这一步,你可能发现的数据处于一种“只读/脱机/”状态,请继续下面的操作
6、dbcc检查
dbcccheckdb('newdb')
进行到这一部可能会发现有错误提示,你可以看看提示的哪几个数据表,如果不是很关键的表,那可以先放过。
7、设置数据库为正常状态
sp_dboption'newdb','dbouseonly','false'
8、关闭对数据库的直接修改权限,不允许对系统目录直接修改
sp_configure'allowupdates',0
go
reconfigurewithoverride
go
当然在做第一遍这个步骤的时候,我的数据并没有恢复。我有从头进行了一遍以上操作,之后我的数据库恢复正常了,感觉非常高兴。
总觉,个人感觉这次数据库被置疑,应该是因为数据库日志太过庞大,数据库的日志竟然达到了15G。不过我还不是很确定,继续学习中。
加油!!!
SQL2000数据库置疑解决方法2009-03-2109:12按下面的步骤处理:
1.新建一个同名的数据库
2.再停掉sqlserver
3.用备份的数据库MDF的文件覆盖掉这个新建的同名数据库文件
4.再重启sqlserver
5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
USEMASTER
GO
SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE
GO
UPDATESYSDATABASESSETSTATUS=32768WHERENAME='数据库名'
Go
sp_dboption'数据库名','singleuser','true'
Go
DBCCCHECKDB('数据库名')
Go
updatesysdatabasessetstatus=28wherename='数据库名'
Go
sp_configure'allowupdates',0reconfigurewithoverride
Go
sp_dboption'数据库名','singleuser','false'
Go
数据库置疑恢复之经典
/*****************************************************************
*这类故障是一般是由于磁盘读写问题造成的。
*下面的语句是修复总部数据库的SQL,如需要修复分部的数据库,请将'hbposv5'改为'hbposv5_branch'
*超市之星系统直接执行
*快捷通、进销存系列,请将'hbposv5'改为'isd2001v3',如果是分部,改为'isd2001v3_branch'
*商务通系列,请将'hbposv5'改为'isd2001v4',如果是分部,改
为'isd2001v4_branch'
******************************************************************/
--请在查询分析器中执行下列语句.执行前断开其它所有数据库连接,最好是断开网线
USEmaster
Go
--单用户模式
EXECsp_dboption'hbposv5','singleuser','TRUE'
go
--数据库检查
DBCCCHECKDB('hbposv5')
Go
--如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复
--数据库修复
DBCCCHECKDB('hbposv5',repair_rebuild)
Go
--再次数据库检查,如果返回结果中没有了红色的提示文字,说明修复成功;
DBCCCHECKDB('hbposv5')
Go
--否则意味着还需要更高级别的修复;尝试将上面修复语句的'repair_rebuild'换为'repair_allow_data_loss'再试,之后再次检查数据库。
--如果还有错误未修复,
--退出前请一定要执行以下语句返回到多用户模式
EXECsp_dboption'hbposv5','singleuser','FALSE'
go
数据库置疑处理方法
步骤1:
创建一个新的数据库,命名为原来数据库的名字。
步骤2:
停止SQLServer
步骤3:
把老数据库的MDF文件替换新数据库的相应的MDF文件,并把LDF文件删除。
步骤4:
重新启动SQLServer服务,然后运行如下命令:
UseMaster
Go
sp_configure'allowupdates',1
reconfigurewithoverride
Go
begintran
updatesysdatabasessetstatus=32768wherename='hbposv5'
--Verifyonerowisupdatedbeforecommitting
committran
步骤5:
停止SQL然后重新启动SQLServer服务,然后运行如下命令:
DBCCTRACEON(3604)
DBCCREBUILD_LOG('db_name','c:\mssql7\data\hbposv5_log.ldf')
Go
步骤6:
停止SQL然后重新启动SQLServer服务,然后运行:
usemaster
updatesysdatabasessetstatus=8wherename='hbposv5'
Go
sp_configure'allowupdates',0
reconfigurewithoverride
Go
步骤7:
运行dbcccheckdb(hbposv5)检查数据库的完整性
注:都要替换成真实的数据库名字。