数据页逻辑错误的检查及处理⽅法
前⾔:数据库越⼤,使⽤时间越长,貌似稳定性也在逐步下降。数据页逻辑错误,可能是DBA遇到⽐较棘⼿的问题之⼀,本⽂将基于实战模式给出⼀些检查及处理的⽅法。当然,任何⽅法都是受制于环境的限制,本⽂中介绍的⽅法也只适⽤于某些特定环境,仅供参考;
===================华丽丽的分割线========================
前⼏天碰到⼀个错误,具体信息如下:
SQL Server 检测到基于⼀致性的逻辑 I/O 错误 pageid 不正确(应为 6:49413777,但实际为 0:0)。在⽂件 'M:\SQLDATA\Pk_4.ndf' 中、偏移量为 0x00005e3fd22000 的位置对数据库 ID 5 中的页 (6:49413777) 执⾏读取期间,发⽣了该错误。SQL Server 错误⽇志或系统事件⽇志
或许这是DBA遇到⽐较棘⼿的问题之⼀了。万幸的是,发⽣错误的数据库是⼀个事务复制环境中的订阅库,⽽且有负载均衡扛着,基本上对业务没有影响;
1、发现该错误后,第⼀反应是存储(楼主的⼟豪公司⽤的是IO卡)出现逻辑错误,尝试⼿动重启服务器,让IO卡进⾏⾃检;进⼊系统后,发现问题没有解决;
这⼀步,在IO卡⾃检完成进⼊系统后,需要进⼀步使⽤⼚商提供的监控程序检查IO卡是否有物理坏块,并收集相关⽇志。经过其他同事检查,IO卡没有异常报错;
2、通过我们的监控⼯具定位到publication是位于Publisher_A的pk_order_BEQ_new,该publication中涉及3个表
  Order_A  \  Order_B  \  Order_C
3、在出现问题的机器上(以下称为subscriber_A)通过select count(1) from table_name(nolock)的⽅式快速检测具体是哪个表有问题;
此处的检测⽅法有局限性,初步分析如下:
  a)如果是⼩表,可能在页损坏之前有类似操作,导致全部页还在缓存区中,因⽽select count(1)是可以获取结果的,⽆法判断出该表是否存页损坏;
  b)如果IAM页中还有6:49413777的信息,且该页还在缓存区中,也是⽆法判断出该表是否存页损坏;
  c)如果IAM页中没有6:49413777的信息,则select count(1)的时候会跳过已损坏的页,仍然可以获取结果,也是⽆法判断出该表是否存页损坏;
只有当IAM页中有6:49413777的信息,⽽该页⼜被交换出缓存区,需要进⾏物理读的时候,才会导致select count(1)⽆法获取结果,具体情况如下:
此处检测 Order_A正常,Order_B报错;但这只能证明Order_B表确实存在损坏的页,⽽Order_A却不能断定⼀定是正常的;
当时的检测办法只是按照select count(1)的⽅式,判断出Order_B表存在坏页;但实际上,可以从Publisher_A的distribution.dbo.msrepl_errors中获取当前由复制引起的⽆法写⼊损坏页的XACT_Seqno,进⽽通过sp_browsereplcmds ‘XACT_Seqno’,’ XACT_Seqno’,及command_id定位到具体引起该错误的对象名、操作类型和主键值;
但此⽅法也有弊端,由于页中可能存在多条记录,如果是页头损坏,将导致该页中的所有记录都⽆法读取,⽽msrepl_errors重试间隔⼤约1分钟,所以通过此⽅法确定损坏的数据页较慢;
4、通过distribution.dbo.msrepl_errors定位到orderexpend_pop表也存在损坏页,并定位到是由delete操作发现异常,因此修改subscriber_A上相应的复制存储过程;
  之前采⽤的仅屏蔽掉IF部分的做法在此处并不适⽤,因为delete时的返回信息并不再是“影响0⾏记录”,⽽是由于页损坏导致记录⽆法到并删除;
delete[dbo].[Order_A]
where[Id]=@pkc1
--if @@rowcount = 0
--    if @@microsoftversion>0x07320000
--        exec sp_MSreplraiserror 20598
  此处为了⽅便后⾯定位可能出现的损坏页,修改存储过程如下:
  先创建记录表p_byxl_Order_A_20140428
--CREATE TABLE p_byxl_Order_A_20140428 (id BIGINT,checkdate DATETIME DEFAULT GETDATE())
--再修改存储过程
INSERT INTO p_byxl_Order_A_20140428(id) VALUES(@pkc1)
RETURN;
--  delete [dbo].[Order_A]
--where [Id] = @pkc1
--if @@rowcount = 0
--    if @@microsoftversion>0x07320000
--        exec sp_MSreplraiserror 20598
  此处修改的⽬的:尽快跳过相应的删除操作,使Publisher_A的复制命令不致于积压的过多;
  对于update和insert操作也应进⾏相应的修改,否则将导致后续命令延迟;
5、考虑到DBCC checktable在执⾏修复时需要将数据库改为单⽤户模式,影响⽤户访问,因此不作为⾸选修复⽅案;
  由于subscriber_A是负载中的读库,因此⾸先将该服务器脱离负载环境,同时检查是否有通过IP直连数据库的应⽤,协调切串;
  如果直连的应⽤较多,短期内⽆法将连接串切⾛,可以先从上级分发重新复制⼀份不更名的表到subs
criber_A,待数据同步后添加索引及相应的权限,再从Publisher_A上停⽌这个表的写⼊,摘除复制后交换subscriber_A的表名,重新搭建不初始化订阅的复制关系;这样可以在继续读取旧表⼤部分数据的同时完成新表的初始化⼯作,唯⼀受影响的除了磁盘空间外,还有初始过程中的IO开销;
  需要注意的是,如果publication中包含多个表,且上级发布服务器Publisher_A为SQLSERVER 2008 R2,则需要这个publication下所有的表都要重新初始化到新表;
  由于08 R2版本在删除article时会导致复制事务丢失的BUG,因此,只能按publication整体删除订阅,因此需要以publication为单位进⾏数据初始化;
  关于如何实现复制订阅端更名的表,可以看⼀下我之前的blog《》
6、继续对损坏页进⾏定位,⼀种⽅法是通过DBCC CHECKTABLE,另⼀种⽅法是通过DBCC IND检索页的连续性;
create table dbcc_ind
(
PageFID numeric(20),
PagePID numeric(20),
IAMFID numeric(20),
IAMPID numeric(20),
ObjectID numeric(20),
IndexID numeric(20),
PartitionNumber numeric(20),
PartitionID numeric(20),
iam_chain_type nvarchar(100),
PageType numeric(20),
IndexLevel numeric(20),
NextPageFID numeric(20),
NextPagePID numeric(20),
PrevPageFID numeric(20),
PrevPagePID numeric(20)
)
INSERT dbcc_ind
EXEC ('DBCC IND(Pk,Order_A,1)')
View Code
  从上图可以看出
  第⼀⾏:PagePID=49413776,NextPagePID=49413777
  第⼆⾏:PagePID=49413778,PrevPagePID=49413777
  从49413776~49413778是本应该是连续的3个页,但由于49413777页损坏,⽆法读取其信息,因此缺少PagePID=49413777的记录;
7、使⽤DBCC PAGE对6:49413777检查,页头部信息已⽆法正确读取;注意下图中红⾊框内的信息
8、创建数据库快照并备份数据库(为了后续测试),使⽤DBCC CHECKTABLE(添加noindex 、with physical_only参数提⾼检查效率)检查Order_A表;⽤时4分钟(2KW⾏记
录,数据+索引约60G),检测结果如下:
以下测试是基于我们的⼀种假设,如果页损坏发⽣在写库上(没有其他的数据副本),想要不丢失数据的修复变得⼗分困难;
另外,就是我们刚升级的SQL 2012的写库由于有windows 2012的跨⼦⽹集的⽀持,配合某C的存储设备(基于存储底层的block级镜像),可实现跨机房的灾备;
但对于上述问题,数据是否就安全呢?
9、将数据备份恢复到某C设备,通过其磁盘块的镜像机制同步到备⽤端,再启⽤备⽤节点,发现并不能使逻辑错误消除;
  分析原因:基于存储底层的block级镜像只是从底层对块进⾏复制,⽽⽆法验证数据逻辑级别的错误,因此损坏的页并不能因此得到修复;
  因此,建议对使⽤C设备的库还需要使⽤alwayson或镜像做⼀级保护,alwayson和镜像中的页修复功能可以最⼤限度修复此类错误;
10、对subscriber_A做DBCC CHECKTABE,注意修改为single_user模式,先选⽤repair_rebuilt模式,执⾏15分钟后,提⽰⽆法进⾏修复;
1消息8939,级别16,状态5,第2⾏
2表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 (6:16320656)。测试(m_headerVersion == HEADER_7_0)失败。值为0和1。
3DBCC语句的修复级别导致避开了此修复。
4消息8939,级别16,状态6,第2⾏
5表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 (6:16320656)。测试((m_type >= DATA_PAGE && m_type <= UNDOFILE_HEADER_PAGE) || (m_type == UNKNOWN_PAGE &&level== BASIC_HEADER))失 6修复此错误要求⾸先修正其他错误。
7消息8939,级别16,状态7,第2⾏
8表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 (6:16320656)。测试(m_freeData >= PageHeaderOverhead () && m_freeData <= (UINT)PAGESIZE - m_slotCnt * sizeof (Slot))失败。值为0和8192
9修复此错误要求⾸先修正其他错误。
10消息8909,级别16,状态1,第2⾏
11表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (6:49413777) 在其页头中包含错误的页 ID。页头中的 PageId 为 (0:0)。
12DBCC语句的修复级别导致避开了此修复。
13消息8909,级别16,状态1,第2⾏
14表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (6:49430702) 在其页头中包含错误的页 ID。页头中的 PageId 为 (0:0)。
15DBCC语句的修复级别导致避开了此修复。
16消息8909,级别16,状态1,第2⾏
17表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (6:49478961) 在其页头中包含错误的页 ID。页头中的 PageId 为 (0:0)。
18DBCC语句的修复级别导致避开了此修复。
19消息8909,级别16,状态1,第2⾏
20表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (6:49895141) 在其页头中包含错误的页 ID。页头中的 PageId 为 (0:0)。
21DBCC语句的修复级别导致避开了此修复。
22 CHECKTABLE 发现有0个分配错误和7个⼀致性错误与任何单个的对象都没有关联。
23 Order_A的DBCC结果。
24消息8928,级别16,状态1,第2⾏
25对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data): ⽆法处理页 (6:49413777)。有关详细信息,请参阅其他错误消息。
26DBCC语句的修复级别导致避开了此修复。
27消息8976,级别16,状态1,第2⾏
28表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。在扫描过程中未发现页 (6:49413777),但该页的⽗级 (7:49486993) 和上⼀页 (6:49413776) 都引⽤了它。请检查以前29修复此错误要求⾸先修正其他错误。
30消息8978,级别16,状态1,第2⾏
31表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 7205759413
4265856 (类型为In-row data)。页 (6:49413778) 缺少上⼀页 (6:49413777) 对它的引⽤。可能是链链接有问题。
32修复此错误要求⾸先修正其他错误。
33消息8928,级别16,状态1,第2⾏
34对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data): ⽆法处理页 (6:49478961)。有关详细信息,请参阅其他错误消息。
35修复此错误要求⾸先修正其他错误。
36消息8976,级别16,状态1,第2⾏
37表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。在扫描过程中未发现页 (6:49478961),但该页的⽗级 (7:49537707) 和上⼀页 (6:49478960) 都引⽤了它。请检查以前38修复此错误要求⾸先修正其他错误。
39消息8978,级别16,状态1,第2⾏
40表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。页 (6:49478962) 缺少上⼀页 (6:49478961) 对它的引⽤。可能是链链接有问题。
41修复此错误要求⾸先修正其他错误。
42消息8928,级别16,状态1,第2⾏
43对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data): ⽆法处理页 (6:49841633)。有关详细信息,请参阅其他错误消息。
44修复此错误要求⾸先修正其他错误。
45消息8939,级别16,状态98,第2⾏
46表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data),页 (6:49841633)。测试(IS_OFF (BUF_IOERR, pBUF->bstat))失败。值为2057和-4。
47修复此错误要求⾸先修正其他错误。
48消息8976,级别16,状态1,第2⾏
49表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。在扫描过程中未发现页 (6:49841633),但该页的⽗级 (7:49917538) 和上⼀页 (6:49841632) 都引⽤了它。请检查以前50修复此错误要求⾸先修正其他错误。
51消息8978,级别16,状态1,第2⾏
52表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。页 (6:49841634) 缺少上⼀页 (6:49841633) 对它的引⽤。可能是链链接有问题。
unknown怎么处理
53修复此错误要求⾸先修正其他错误。
54消息8928,级别16,状态1,第2⾏
55对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data): ⽆法处理页 (6:49895141)。有关详细信息,请参阅其他错误消息。
56修复此错误要求⾸先修正其他错误。
57消息8976,级别16,状态1,第2⾏
58表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。在扫描过程中未发现页 (6:49895141),但该页的⽗级 (6:49912485) 和上⼀页 (6:49895140) 都引⽤了它。请检查以前59修复此错误要求⾸先修正其他错误。
60消息8978,级别16,状态1,第2⾏
61表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。页 (6:49895142) 缺少上⼀页 (6:49895141) 对它的引⽤。可能是链链接有问题。
62修复此错误要求⾸先修正其他错误。
63消息8928,级别16,状态1,第2⾏
64对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 7205759414272000
0 (类型为In-row data): ⽆法处理页 (6:16320656)。有关详细信息,请参阅其他错误消息。
65DBCC语句的修复级别导致避开了此修复。
66消息8976,级别16,状态1,第2⾏
67表错误: 对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)。在扫描过程中未发现页 (6:16320656),但该页的⽗级 (7:16360354) 和上⼀页 (7:50019300) 都引⽤了它。请检查以前68修复此错误要求⾸先修正其他错误。
69消息8978,级别16,状态1,第2⾏
70表错误: 对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)。页 (6:49412182) 缺少上⼀页 (6:49430702) 对它的引⽤。可能是链链接有问题。
71修复此错误要求⾸先修正其他错误。
72消息8928,级别16,状态1,第2⾏
73对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data): ⽆法处理页 (6:49430702)。有关详细信息,请参阅其他错误消息。
74修复此错误要求⾸先修正其他错误。
75消息8976,级别16,状态1,第2⾏
76表错误: 对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)。在扫描过程中未发现页 (6:49430702),但该页的⽗级 (6:49434625) 和上⼀页 (6:49433061) 都引⽤了它。请检查以前77修复此错误要求⾸先修正其他错误。
78消息8978,级别16,状态1,第2⾏
79表错误: 对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)。页 (7:50019299) 缺少上⼀页 (6:16320656) 对它的引⽤。可能是链链接有问题。
80修复此错误要求⾸先修正其他错误。
81对象'Order_A'的4214698页中有200428357⾏。
82 CHECKTABLE 在表'Order_A' (对象 ID 300580159)中发现0个分配错误和19个⼀致性错误。
83对于由DBCC CHECKTABLE (Pk.dbo.Order_A, repair_rebuild)发现的错误,repair_allow_data_loss 是最低的修复级别。
84DBCC执⾏完毕。如果DBCC输出了错误信息,请与系统管理员联系。
View Code
11、继续通过repair_allow_data_loss模式进⾏修复,执⾏约1⼩时后修复完毕,丢失记录10条;
1消息8939,级别16,状态5,第1⾏
2表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 (6:16320656)。测试(m_headerVersion == HEADER_7_0)失败。值为0和1。
3该错误已修复。
4消息8939,级别16,状态6,第1⾏
5表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 (6:16320656)。测试((m_type >= DATA_PAGE && m_type <= UNDOFILE_HEADER_PAGE) || (m_type == UNKNOWN_PAGE &&level== BASIC_HEADER))失  6该错误已修复。
7消息8939,级别16,状态7,第1⾏
8表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 (6:16320656)。测试(m_freeData >= PageHeaderOverhead () && m_freeData <= (UINT)PAGESIZE - m_slotCnt * sizeof (Slot))失败。值为0和8192
9该错误已修复。
10消息8909,级别16,状态1,第1⾏
11表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (6:49413777) 在其页头中包含错误的页 ID。页头中的 PageId 为 (0:0)。
12该错误已修复。
13消息8909,级别16,状态1,第1⾏
14表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (6:49430702) 在其页头中包含错误的页 ID。页头中的 PageId 为 (0:0)。
15该错误已修复。
16消息8909,级别16,状态1,第1⾏
17表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (6:49478961) 在其页头中包含错误的页 ID。页头中的 PageId 为 (0:0)。
18该错误已修复。
19消息8909,级别16,状态1,第1⾏
20表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (6:49895141) 在其页头中包含错误的页 ID。页头中的 PageId 为 (0:0)。
21该错误已修复。
22 CHECKTABLE 发现有0个分配错误和7个⼀致性错误与任何单个的对象都没有关联。
23 CHECKTABLE 修复了0个分配错误和7个⼀致性错误,这些错误不与任何单个对象相关联。
24 Order_A的DBCC结果。
25修复: 已为数据库'Pk'中的对象'dbo.Order_A'成功地重新⽣成了Clustered索引。
26修复: 页 (6:49413777) 已从对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)释放。
27修复: 页 (6:49478961) 已从对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)释放。
28修复: 页 (6:49841633) 已从对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)释放。
29修复: 页 (6:49895141) 已从对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)释放。
30修复: 已为数据库'Pk'中的对象'dbo.Order_A, idx_Order_A_ck_new_orderid'成功地重新⽣成了Nonclustered索引。
31修复: 页 (6:16320656) 已从对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)释放。
32修复: 页 (6:49430702) 已从对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)释放。
33修复: 已为数据库'Pk'中的对象'dbo.Order_A, idx_Order_A_venderid_orderid'成功地重新⽣成了Nonclustered索引。
34消息8945,级别16,状态1,第1⾏
35表错误: 将重新⽣成对象 ID 300580159,索引 ID 1。
36该错误已修复。
37消息8928,级别16,状态1,第1⾏
38对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data): ⽆法处理页 (6:49413777)。有关详细信息,请参阅其他错误消息。
39该错误已修复。
40消息8976,级别16,状态1,第1⾏
41表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。在扫描过程中未发现页 (6:49413777),但该页的⽗级 (7:49486993) 和上⼀页 (6:49413776) 都引⽤了它。请检查以前 42该错误已修复。
43消息8978,级别16,状态1,第1⾏
44表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。页 (6:49413778) 缺少上⼀页 (6:49413777) 对它的引⽤。可能是链链接有问题。
45该错误已修复。
46消息8928,级别16,状态1,第1⾏
47对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data): ⽆法处理页 (6:49478961)。有关详细信息,请参阅其他错误消息。
48该错误已修复。
49消息8976,级别16,状态1,第1⾏
50表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。在扫描过程中未发现页 (6:49478961),但该页的⽗级 (7:49537707) 和上⼀页 (6:49478960) 都引⽤了它。请检查以前 51该错误已修复。
52消息8978,级别16,状态1,第1⾏
53表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。页 (6:49478962) 缺少上⼀页 (6:49478961) 对它的引⽤。可能是链链接有问题。
54该错误已修复。
55消息8928,级别16,状态1,第1⾏
56对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data): ⽆法处理页 (6:49841633)。有关详细信息,请参阅其他错误消息。
57该错误已修复。
58消息8939,级别16,状态98,第1⾏
59表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data),页 (6:49841633)。测试(IS_OFF (BUF_IOERR, pBUF->bstat))失败。值为2057和-4。
60该错误已修复。
61消息8976,级别16,状态1,第1⾏
62表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。在扫描过程中未发现页 (6:49841633),但该页的⽗级 (7:49917538) 和上⼀页 (6:49841632) 都引⽤了它。请检查以前 63该错误已修复。
64消息8978,级别16,状态1,第1⾏
65表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。页 (6:49841634) 缺少上⼀页 (6:49841633) 对它的引⽤。可能是链链接有问题。
66该错误已修复。
67消息8928,级别16,状态1,第1⾏
68对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data): ⽆法处理页 (6:49895141)。有关详细信息,请参阅其他错误消息。
69该错误已修复。
70消息8976,级别16,状态1,第1⾏
71表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。在扫描过程中未发现页 (6:49895141),但该页的⽗级 (6:49912485) 和上⼀页 (6:49895140) 都引⽤了它。请检查以前 72该错误已修复。
73消息8978,级别16,状态1,第1⾏
74表错误: 对象 ID 300580159,索引 ID 1,分区 ID 72057594125221888,分配单元 ID 72057594134265856 (类型为In-row data)。页 (6:49895142) 缺少上⼀页 (6:49895141) 对它的引⽤。可能是链链接有问题。
75该错误已修复。
76消息8945,级别16,状态1,第1⾏
77表错误: 将重新⽣成对象 ID 300580159,索引 ID 2。
78该错误已修复。
79消息8928,级别16,状态1,第1⾏
80对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data): ⽆法处理页 (6:16320656)。有关详细信息,请参阅其他错误消息。
81该错误已修复。
82消息8976,级别16,状态1,第1⾏
83表错误: 对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)。在扫描过程中未发现页 (6:16320656),但该页的⽗级 (7:16360354) 和上⼀页 (7:50019300) 都引⽤了它。请检查以前 84该错误已修复。
85消息8978,级别16,状态1,第1⾏
86表错误: 对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)。页 (6:49412182) 缺少上⼀页 (6:49430702) 对它的引⽤。可能是链链接有问题。
87该错误已修复。
88消息8928,级别16,状态1,第1⾏
89对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data): ⽆法处理页 (6:49430702)。有关详细信息,请参阅其他错误消息。
90该错误已修复。
91消息8976,级别16,状态1,第1⾏
92表错误: 对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)。在扫描过程中未发现页 (6:49430702),但该页的⽗级 (6:49434625) 和上⼀页 (6:49433061) 都引⽤了它。请检查以前
93该错误已修复。
94消息8978,级别16,状态1,第1⾏
95表错误: 对象 ID 300580159,索引 ID 2,分区 ID 72057594132299776,分配单元 ID 72057594142720000 (类型为In-row data)。页 (7:50019299) 缺少上⼀页 (6:16320656) 对它的引⽤。可能是链链接有问题。 96该错误已修复。
97消息8945,级别16,状态1,第1⾏
98表错误: 将重新⽣成对象 ID 300580159,索引 ID 7。
99该错误已修复。
100对象'Order_A'的4214698页中有200428357⾏。
101 CHECKTABLE 在表'Order_A' (对象 ID 300580159)中发现0个分配错误和19个⼀致性错误。
102 CHECKTABLE 在表'Order_A' (对象 ID 300580159)中修复了0个分配错误和19个⼀致性错误。
103DBCC执⾏完毕。如果DBCC输出了错误信息,请与系统管理员联系。
View Code
结论:
  1、建议对写库搭建同步的镜像或alwayson环境(优先选⽤同步模式),以最⼤限度的保证数据不丢失;
  2、如读库遇到此类问题,先重启服务器,让存储设备⾃检,确认⽆法修复的,再进⾏脱离负载、通知研发切串的操作;
  3、尽量避免直接DBCC CHECKTABLE的修复操作,因为这样的操作需要在单⽤户模式下执⾏;⾸选通过复制对异常的表进⾏更名的初始化,实现数据页的修复;
  4、即便定位到哪些记录存在于损坏页中,也⽆法通过重新导⼊数据或重建聚集索引实现修复功能;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。