Sqlserver的数据恢复案例

[复制链接]

该用户从未签到

2

主题

4

回帖

30

积分

[INTOHARD]工兵

Rank: 1

积分
30
QQ
发表于 2008-6-4 12:59:39 | 显示全部楼层 |阅读模式
作为企业级应用,Sqlserver对[wiki]存储[/wiki]硬件的要求极高。一般的ATA[wiki]硬盘[/wiki]没有提供静止系统使用硬盘[wiki]缓存[/wiki]的指令,所以不能在企业级应用中使用。必须采用[wiki]SCSI[/wiki]或FC硬盘,要求更高的系统应该采用智能存储阵列。

当然了,还有很多中小客户根本没有意识到存储对数据库应用的重要性,随便把重要的数据库安装在ATA硬盘上,根本也没有什么断电保护的安全措施。运气好的,数据库能用个三年5载,也没什么故障;运气不好的,简单的一个意外断电,就可能使整个数据库崩溃,数据完整性被破坏,甚至数据文件损坏。。。这时候,就只有祈祷高手的出现了。。。

数据库文件损害问题比较严重。一般的数据库管理人员可能会处理数据库内部逻辑错误造成的数据库打不开,或者一些软件也能修复这些错误;但是如果文件本身损害,系统根本就无法attach上这个数据库,这时候再厉害的数据库高手也英雄无用武之地了。

我们有一个案例,客户的重要数据存放在Sqlserver中,但平时也没有注意备份。一次意外断电,数据文件被损害。重新启动系统时,告知数据库无法打开,请检查是否是有效文件。

面对这样的问题,一般的解决方法是:
1.        新建一个数据库
2.        用需要修复的数据库文件替代新建的数据库文件
3.        重新启动数据库,这时候再对数据库进行处理。。。(略)

以上的解决办法前提是SqlServer还能认出这是个数据库文件,如果由于硬件错误造成数据库文件本身的数据结构变化,SqlServer将拒绝承认这是个合法的数据库文件,因此也无法attach,更谈不上进一步的逻辑修复了。
SqlServer的每一个页面大小为8K,每个页面都顺序编号,这个编号称为page id。如果某个page id错误,SqlServer就会报告823错误,系统无法attach这个数据库。
其实解决办法说难也不难,用一个diskscan的工具,找到文件出错页面的第一个sector,把前两位重置为合法的page id就可以了。
这时候再重新attach数据库,数据库就可以被attach上了。当然这时候会报其它的逻辑错误。但逻辑错误相对就很好处理了,运行dbcc check就能解决掉大部分的问题。
如果损坏的8k页面没有什么重要数据,这时候恢复的数据库就能正常运行了。如果不行,可能还需要手工恢复一些交易信息。

最后强烈建议为了客户的数据安全,一定要做好数据备份。上述错误如果提交给微软,微软会告诉你无法解决,惟一的办法就是利用以前的备份进行恢复。
  • TA的每日心情
    开心
    2022-1-30 14:56
  • 签到天数: 13 天

    [LV.3]八品县丞

    6

    主题

    549

    回帖

    4871

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    4871
    发表于 2008-6-4 13:12:09 | 显示全部楼层
    谢谢!OKOKOKOK!!

    该用户从未签到

    44

    主题

    453

    回帖

    2214

    积分

    [INTOHARD]营长

    飞梦维修服务中心

    Rank: 6Rank: 6

    积分
    2214
    发表于 2008-6-4 16:25:33 | 显示全部楼层
    讲得很详细,多谢分享!
  • TA的每日心情
    难过
    2019-7-7 17:34
  • 签到天数: 3 天

    [LV.2]九品芝麻官

    20

    主题

    431

    回帖

    254

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    254
    发表于 2008-6-4 16:33:27 | 显示全部楼层
    感谢
    说的很好,就是不明白
  • TA的每日心情
    慵懒
    2019-3-26 09:25
  • 签到天数: 3 天

    [LV.2]九品芝麻官

    31

    主题

    799

    回帖

    1万

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    12962
    发表于 2008-6-4 16:43:27 | 显示全部楼层
    感谢
    说的很好,就是不明白
  • TA的每日心情
    无聊
    2012-4-26 09:05
  • 签到天数: 1 天

    [LV.1]布衣百姓

    22

    主题

    464

    回帖

    1万

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    14983
    QQ
    发表于 2008-6-4 18:17:49 | 显示全部楼层
    多谢,又学到了知识。好耶[s:52]

    该用户从未签到

    2

    主题

    430

    回帖

    892

    积分

    [INTOHARD]连长

    Rank: 4

    积分
    892
    发表于 2008-6-4 19:50:41 | 显示全部楼层
    看后做实验才是硬道理`~~

    该用户从未签到

    46

    主题

    533

    回帖

    2126

    积分

    [INTOHARD]营长

    Rank: 6Rank: 6

    积分
    2126
    QQ
    发表于 2008-6-4 20:14:06 | 显示全部楼层
    学习(38: (38:
  • TA的每日心情
    奋斗
    2023-8-8 15:42
  • 签到天数: 1883 天

    [LV.Master]三朝元老

    7

    主题

    2126

    回帖

    8537

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    8537
    QQ
    发表于 2008-7-4 00:25:12 | 显示全部楼层
    不错,学习了,谢谢楼主

    该用户从未签到

    2

    主题

    86

    回帖

    289

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    289
    发表于 2008-7-4 06:13:48 | 显示全部楼层
    对于硬盘 还在学习之中
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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