前事不忘,后事之师,不忘国耻!

 注册  找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2768|回复: 1

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

[复制链接]

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

[复制链接]
ehxz

主题

0

回帖

7147

积分

管理员

积分
7147
2008-12-4 10:04:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
见鬼,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'--将目标数据库置为多用户状态


至此,数据库内数据已经找回了,但发现强制约束不正确,不过能找到数据已经不错了。要彻底修复可以手工重建强制约束或建立新数据库导入旧数据,我选择后者。
FROM:http://blog.csdn.net/nhconch/archive/2008/12/01/3420032.aspx
免责申明1、欢迎访问本站,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@dbabbs.com
冷月风

主题

0

回帖

2

积分

初级会员

积分
2
2009-4-6 17:32:49 | 显示全部楼层
:biggrin:保证数据的准确完整很重要,你得做法是对滴~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|DBA论坛中国 ( 鲁ICP备20017503号-2 )

GMT+8, 2024-4-20 17:07 , Processed in 0.132142 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表