在SQL Server 2005中恢复日志损坏的数据库或状态可疑的数据库[日志文件损坏]

标签:日志,恢复解决方案

很多偶然情况会引起SQL Server 2005数据库日志文件的损坏,比如:硬件故障、计算机非正常重启或关机。

当SQL Server 2005数据库日志文件损坏时,在SQL Server Management Studio中显示数据库处于可疑(suspect)状态。在这种情况下重启数据库服务和服务器都没用.如果把数据库分离,再附加那更惨.

在这种情况下很多,数据库管理员手忙脚乱,可能会贸然行事.我分两种情况来说明.
1.SQL Server Management Studio中显示数据库处于(可疑)状态.泰然处之

发现数据库处于可疑,没做别的操作的话.执行下列脚本,很快就恢复了.
alter database DBName set emergency
alter database DBName set single_user
dbcc checkdb('DBName',REPAIR_ALLOW_DATA_LOSS)
alter database DBName set multi_user
alter database DBName set online

其中DBName是具体的数据库名.请自行替换即可.
2.SQL Server Management Studio中显示数据库处于(可疑)状态.手忙脚乱的.

发现数据库处于可疑,有的人试图分离数据库,再次附加.我只能说自作聪明,自找麻烦.如果执行删除,那就彻底死定,没戏了.

我这里的方法也只是针对进行了数据库分离操作的.这时mdf.提示还是好的.只是log文件坏了.比如当前出问题的数据库名叫:ErrorDB.请按下列步骤执行即可.

a.首先备份ErrorDB.mdf文件.

b.SQL Server Management Studio中重新新建一个名叫ErrorDB的数据库.

c.停止ErrorDB数据库服务.用备份的ErrorDB.mdf替换刚新建的ErrorDB.mdf文件.

d.启动ErrorDB数据库服务.当前数据库ErrorDB状态变为可疑了.

e.执行脚本:
alter database ErrorDB set emergency
alter database ErrorDB set single_user
dbcc checkdb('ErrorDB',REPAIR_ALLOW_DATA_LOSS)
alter database ErrorDB set multi_user
alter database ErrorDB set online

利用这种方法,即使没有日志文件也可恢复数据库.
posted @ 2011-05-17 17:56  Mr.Tom  阅读(259)  评论(1)    收藏  举报