李大仁博客

修复SQLServer2005/2008/2012数据库质疑/Suspect状态

昨天夜间机房断电后SQLServer2008服务器重启,早上Sharepoint系统不能登录,使用SQLServer的管理工具检查后发现,SharePoint_Config数据库上多了一个黄色的三角符号,并提示数据库为质疑/Suspect状态.
立即使用以下SQL脚本进行强制恢复数据库

    use master
    declare @databasename varchar(255)
    set @databasename='SharePoint_Config'
    sp_configure 'allow updates',1
    reconfigure with override
    --强制修改数据库状态
    update master..sysdatabases set status = 16 where name = @databasename
    --尝试恢复数据库
    dbcc dbrecover(@databasename, IGNOREERRORS)

结果还是质疑/Suspect状态,估计是数据库日志文件有损坏. 好在只是SharePoint_Config数据库,对用户数据没有影响。直接使用了以下方法进行了恢复数据库。

1.停止SQLServer服务
2.到SQLServer的数据库文件夹下备份SharePoint_Config和SharePoint_Config的Log数据
3.启动SQLServer服务
4.删除并创建新的同名SharePoint_Config数据库
5.停止SQLServer服务
6.到SQLServer的数据库文件夹下替换SharePoint_Config为之前备份的SharePoint_Config。
7.启动SQLServer服务
8.设置SharePoint_Config为emergency状态

     alter database SharePoint_Config set emergency

9.恢复SharePoint_Config数据库(过程中出现大量恢复错误)

    use master
    declare @databasename varchar(255)
    set @databasename='SharePoint_Config'
    --设置为单用户模式
    exec sp_dboption @databasename, N'single', N'true'
    --恢复数据(允许数据丢失)
    dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
    --恢复数据(重建数据库结构)
    --dbcc checkdb(@databasename,REPAIR_REBUILD)
    --检查约束
    —dbcc checkconstraints
    --恢复为多用户模式
    exec sp_dboption @databasename, N'single', N'false'

10.重新启动SQLServer服务
11.数据恢复完成,手动处理恢复后的数据和备份数据的差分

以上方法只适用于数据库文件完整,Log文件不完整或丢失的情况,如果数据库文件不完整,请注意不要使用。

参考网址
http://blog.csdn.net/htl258/article/details/4136908
http://blog.sina.com.cn/s/blog_75a555e401015o4z.html

Exit mobile version