`
lovnet
  • 浏览: 6707364 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

从被置疑的数据库中抢救数据[SQL2005]

 
阅读更多
见鬼,12月头一日一大早就被告知系统不能登录,用户描述的错误信息是弹出了一个设置数据库连接的对话框,连接服务器一看数据库被置疑了,此状态下只有脱机/联机正常操作可以执行其他都报错,sp_attach_single_file_db、dbcc等命令也没法进行。
网上提供的解决办法中只有替换MDF的方法可用,当然服务器上运行着其他的数据库,不允许停止服务来修复数据,所以我的处理方法稍有不同:
1、删除数据库,但保留数据库文件MDF。
2、移走数据库文件。
3、建立同名数据库,生成同名的数据库文件(路径也一样)
4、将新数据库置为脱机。
5、复制旧MDF文件替换新生成的MDF文件
6、将数据库置为联机,此时数据库被置疑。
7、运行alter database dbname set emergency
8、运行以下语句修复数据库:
use master
declare @databasename varchar(255)
set @databasename='数据库名'
exec sp_dboption @databasename, N'single', N'true'--将目标数据库置为单用户状态
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb(@databasename,REPAIR_REBUILD)
exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态

至此,数据库内数据已经找回了,但发现强制约束不正确,不过能找到数据已经不错了。要彻底修复可以手工重建强制约束或建立新数据库导入旧数据,我选择后者。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics