从被置疑的数据库中抢救数据[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'--将目标数据库置为多用户状态

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值