banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

修复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

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.