yshdata 发表于 2013-11-25 21:14:28

SQL数据库修复案例-故障造成原因

案例:思讯软件
故障:意外断电导致数据库无法访问
附加提示:

数据库容量5G

根据SQL附加的错误提示,判断为头或启动页面损坏,经过对头和启动页面的整体分析没有发现明显损坏主要数据全部完整。
通过数据5个月前的备份库,进行比对分析和尝试性修复故障库,最终确定为启动页面损坏、修复后直接附加,DBCC检测通过


整个修复过程不到10分钟,为客户挽回数百万账目。

在此和大家分享一下数据库修复的一些常识和对故障的判断.

SQL数据库最常见损坏故障 823824 错误此类问题 大部分都是系统表损坏造成,系统表也就是新建一个空库系统生成的表如图


sysobjects 是系统主表里面记录了 所有表的 nameid xtype uid infostatus ====属性其中通过主表里面的 id可以定位到
所有表分部的页面地址823 824 等错误超过95%以上都是此表损坏造成,要恢复数据,那就必须要修复系统表的损坏数据。

对于一些常见的修复软件 更多的情况是修复后少数据、存储过程,视图等等 导致软件下无法正常使用。

sysindexes 系统索引
sysfiles 系统文件(此表包含数据名称,数据库的总页面,以及存放路径==)系统表的更多资料可以通过网络学习


SQL 的常见故障不是有效的数据库文件,此类故障则更多是头或启动页面检测失败造成,此类故障的修复最好通过备份库获取相应的头或
启动页面信息来修复,成功的概率更高,如果没有备份库、那也可以尝试生成新的数据来代替,修复效果要远比常见的SQL修复软件
Stellar_Phoenix_SQL_RecoveryD-Recoverysystoolssql 等软件 直接修复的效果好上很多 设置可以修复后可以直接附加 使用。

对于大家用 软件修复后无法在客户端正常使用或者看到表数据无法导出的情况,无法处理可与我联系;

pxhxkij 发表于 2013-12-21 09:28:09

非常感谢楼主,详细图文并茂。

laxiaota 发表于 2013-12-24 10:49:32

如此高尚的帖子极少见啦,非常感谢楼主!

jianwu2013 发表于 2014-1-7 16:48:40

好东西 谢谢分享

单丝竹园 发表于 2014-8-12 00:02:20

服务器: 消息 8946,级别 16,状态 12,行 2
表错误: 分配页 (1:56616) 的 PFS_PAGE 页首结构值无效。类型为 0。请检查该页上的类型、对象 ID 和页 ID。
服务器: 消息 8921,级别 16,状态 1,行 1
CHECKTABLE 已终止。收集事实数据时检测到失败。可能是因为 tempdb 空间用尽或某一系统表不一致。请检查前面的错

误信息。
服务器: 消息 8906,级别 16,状态 1,行 1
扩展盘区 (1:53659)(属于数据库 ID 7)在 SGAM (1:3) 和 PFS (1:48528) 中进行了分配,但未在任何 IAM 中进行过

分配。PFS 标志 'MIXED_EXT ALLOCATED   0_PCT_FULL'。
服务器: 消息 8906,级别 16,状态 1,行 1
扩展盘区 (1:53660)(属于数据库 ID 7)在 SGAM (1:3) 和 PFS (1:48528) 中进行了分配,但未在任何 IAM 中进行过

分配。PFS 标志 'IAM_PG MIXED_EXT ALLOCATED   0_PCT_FULL'。
服务器: 消息 8948,级别 16,状态 1,行 1
数据库错误: 页 (1:53660) 用错误的类型进行了标记(在 PFS 页 (1:48528) 中)。PFS 状态为 0x70,而预期为 0x60


服务器: 消息 8906,级别 16,状态 1,行 1
扩展盘区 (1:53661)(属于数据库 ID 7)在 SGAM (1:3) 和 PFS (1:48528) 中进行了分配,但未在任何 IAM 中进行过

分配。PFS 标志 'MIXED_EXT ALLOCATED   0_PCT_FULL'。
服务器: 消息 8906,级别 16,状态 1,行 1
扩展盘区 (1:53662)(属于数据库 ID 7)在 SGAM (1:3) 和 PFS (1:48528) 中进行了分配,但未在任何 IAM 中进行过

分配。PFS 标志 'MIXED_EXT ALLOCATED   0_PCT_FULL'。
服务器: 消息 8906,级别 16,状态 1,行 1
扩展盘区 (1:53663)(属于数据库 ID 7)在 SGAM (1:3) 和 PFS (1:48528) 中进行了分配,但未在任何 IAM 中进行过

分配。PFS 标志 'IAM_PG MIXED_EXT ALLOCATED   0_PCT_FULL'。
服务器: 消息 8909,级别 16,状态 1,行 1
表错误: 对象 ID 0,索引 ID 0,页 ID (1:53663)。页首结构中的 PageId = (0:0)。
服务器: 消息 8928,级别 16,状态 1,行 1
对象 ID 0,索引 ID 0: 未能处理页 (1:53663)。详细信息请参阅其它错误。
服务器: 消息 8909,级别 16,状态 1,行 1
表错误: 对象 ID 0,索引 ID 0,页 ID (1:56616)。页首结构中的 PageId = (0:0)。
服务器: 消息 8998,级别 16,状态 1,行 1
GAM、SGAM 或 PFS 页上的页错误导致 CHECKALLOC 无法验证数据库 ID 7 中从 (1:56616) 到 (1:64703) 的页。原因请

参阅其它错误信息。
服务器: 消息 8909,级别 16,状态 1,行 1
表错误: 对象 ID 0,索引 ID 0,页 ID (1:64704)。页首结构中的 PageId = (0:0)。
服务器: 消息 8998,级别 16,状态 1,行 1
GAM、SGAM 或 PFS 页上的页错误导致 CHECKALLOC 无法验证数据库 ID 7 中从 (1:64704) 到 (1:72791) 的页。原因请

参阅其它错误信息。
'SD203N_1' 的 DBCC 结果。
CHECKDB 发现了 11 个分配错误和 1 个一致性错误,这些错误并不与任何单个的对象相关联。
CHECKDB 发现了 11 个分配错误和 1 个一致性错误(在数据库 'SD203N_1' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
请教一下,这个该如何去修呢,能给个思路么(1:非常感谢

单丝竹园 发表于 2014-8-13 15:03:29

服务器: 消息 8966,级别 16,状态 1,行 1
未能读取并闩锁页 (1:7765)(用闩锁类型 SH)。sysobjects 失败。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
这个是系统表坏了,没有备份(36:

pchao.net 发表于 2014-11-4 18:18:17

据库修复案例-故障造成原

pchao.net 发表于 2014-11-4 18:18:46

好东西 谢谢分享
页: [1]
查看完整版本: SQL数据库修复案例-故障造成原因