SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确(应为 1:10202320,但实际为 0:0)

问题背景:

客户数据库检测到SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确(应为 1:10202320,但实际为 0:0)


1> 日志如下:

复制代码
 1 [09:24:55.125] {http--8080-81$879881269} at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
 2 [09:24:55.125] {http--8080-81$879881269} at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
 3 [09:24:55.125] {http--8080-81$879881269} at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:730)
 4 [09:24:55.125] {http--8080-81$879881269} at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:649)
 5 [09:24:55.125] {http--8080-81$879881269} at java.lang.Thread.run(Thread.java:662)
 6 [09:24:55.125] {http--8080-81$879881269} Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确(应为 1:10202320,但实际为 0:0)。
 8 在文件 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\ecology.mdf' 中、偏移量为 0x000013759a0000 的位置对数据库 ID 5 中的页 (1:10202320) 执行 读取 期间,发生了该错误。
10 SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;
12 有关详细信息,请参阅 SQL Server 联机丛书。
13 [09:24:55.125] {http--8080-81$879881269} at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196)
14 [09:24:55.125] {http--8080-81$879881269} at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1454)
15 [09:24:55.125] {http--8080-81$879881269} at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:388)
16 [09:24:55.125] {http--8080-81$879881269} at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:338)
17 [09:24:55.125] {http--8080-81$879881269} at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026)
18 [09:24:55.125] {http--8080-81$879881269} at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416)
19 [09:24:5
复制代码

解决:

复制代码
1 use db_name
2 go
3 ALTER DATABASE db_name SET SINGLE_USER
4 go
5 DBCC CHECKDB ('db_name', repair_allow_data_loss) with NO_INFOMSGS
6 go
7 ALTER DATABASE db_name SET MULTI_USER
8 go
复制代码

修复结果如下:

复制代码
 1 消息 8909,级别 16,状态 1,第 1 行 
 2 表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (1:1748) 在其页头中包含错误的页 ID。页头中的 PageId = (0:0)。 
 3 该错误已修复。 
 4 消息 8909,级别 16,状态 1,第 1 行 
 5 表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (1:1749) 在其页头中包含错误的页 ID。页头中的 PageId = (0:0)。 
 6 该错误已修复。 
 7 消息 8909,级别 16,状态 1,第 1 行 
 8 表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (1:1750) 在其页头中包含错误的页 ID。页头中的 PageId = (0:0)。 
 9 该错误已修复。 
10 消息 8909,级别 16,状态 1,第 1 行 
11 表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (1:1751) 在其页头中包含错误的页 ID。页头中的 PageId = (0:0)。 
12 该错误已修复。 
13 消息 8909,级别 16,状态 1,第 1 行 
14 表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (1:1772) 在其页头中包含错误的页 ID。页头中的 PageId = (0:0)。 
15 该错误已修复。 
16 消息 8909,级别 16,状态 1,第 1 行 
17 表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (1:1773) 在其页头中包含错误的页 ID。页头中的 PageId = (0:0)。 
18 该错误已修复。 
19 消息 8909,级别 16,状态 1,第 1 行 
20 表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (1:1774) 在其页头中包含错误的页 ID。页头中的 PageId = (0:0)。 
21 该错误已修复。 
22 消息 8909,级别 16,状态 1,第 1 行 
23 表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型为 Unknown),页 ID (1:1775) 在其页头中包含错误的页 ID。页头中的 PageId = (0:0)。 
24 该错误已修复。 
25 CHECKDB 发现有 0 个分配错误和 8 个一致性错误与任何单个的对象都没有关联。 
26 CHECKDB 修复了 0 个分配错误和 8 个一致性错误,这些错误不与任何单个对象相关联。 
27 修复: 页 (1:1772) 已从对象 ID 1694629080,索引 ID 0,分区 ID 111059211386880,分配单元 ID 111059211386880 (类型为 In-row data)释放。 
28 修复: 页 (1:1773) 已从对象 ID 1694629080,索引 ID 0,分区 ID 111059211386880,分配单元 ID 111059211386880 (类型为 In-row data)释放。 
29 修复: 页 (1:1774) 已从对象 ID 1694629080,索引 ID 0,分区 ID 111059211386880,分配单元 ID 111059211386880 (类型为 In-row data)释放。 
30 修复: 页 (1:1775) 已从对象 ID 1694629080,索引 ID 0,分区 ID 111059211386880,分配单元 ID 111059211386880 (类型为 In-row data)释放。 
31 修复: 已为数据库 'sssss' 中的对象 'dbo.MYCARGOOUTRECORD, IX_MYCARGOOUTRECORD_1' 成功地重新生成了 Nonclustered 索引。 
32 修复: 已为数据库 'sssss' 中的对象 'dbo.MYCARGOOUTRECORD, IX_MYCARGOOUTRECORD' 成功地重新生成了 Nonclustered 索引。 
33 消息 8928,级别 16,状态 1,第 1 行 
34 对象 ID 1694629080,索引 ID 0,分区 ID 111059211386880,分配单元 ID 111059211386880 (类型为 In-row data): 无法处理页 (1:1772)。有关详细信息,请参阅其他错误消息。 
35 该错误已修复。 
36 消息 8928,级别 16,状态 1,第 1 行 
37 对象 ID 1694629080,索引 ID 0,分区 ID 111059211386880,分配单元 ID 111059211386880 (类型为 In-row data): 无法处理页 (1:1773)。有关详细信息,请参阅其他错误消息。 
38 该错误已修复。 
39 消息 8928,级别 16,状态 1,第 1 行 
40 对象 ID 1694629080,索引 ID 0,分区 ID 111059211386880,分配单元 ID 111059211386880 (类型为 In-row data): 无法处理页 (1:1774)。有关详细信息,请参阅其他错误消息。 
41 该错误已修复。 
42 消息 8928,级别 16,状态 1,第 1 行 
43 对象 ID 1694629080,索引 ID 0,分区 ID 111059211386880,分配单元 ID 111059211386880 (类型为 In-row data): 无法处理页 (1:1775)。有关详细信息,请参阅其他错误消息。 
44 该错误已修复。 
45 消息 8945,级别 16,状态 1,第 1 行 
46 表错误: 将重新生成对象 ID 1694629080,索引 ID 2。 
47 该错误已修复。 
48 消息 8945,级别 16,状态 1,第 1 行 
49 表错误: 将重新生成对象 ID 1694629080,索引 ID 3。 
50 该错误已修复。 
51 CHECKDB 在表 'MYCARGOOUTRECORD' (对象 ID 1694629080)中发现 0 个分配错误和 4 个一致性错误。 
52 CHECKDB 在表 'MYCARGOOUTRECORD' (对象 ID 1694629080)中修复了 0 个分配错误和 4 个一致性错误。 
53 修复: 页 (1:1748) 已从对象 ID 2014630220,索引 ID 0,分区 ID 132030806097920,分配单元 ID 132030806097920 (类型为 In-row data)释放。 
54 修复: 页 (1:1749) 已从对象 ID 2014630220,索引 ID 0,分区 ID 132030806097920,分配单元 ID 132030806097920 (类型为 In-row data)释放。 
55 修复: 页 (1:1750) 已从对象 ID 2014630220,索引 ID 0,分区 ID 132030806097920,分配单元 ID 132030806097920 (类型为 In-row data)释放。 
56 修复: 页 (1:1751) 已从对象 ID 2014630220,索引 ID 0,分区 ID 132030806097920,分配单元 ID 132030806097920 (类型为 In-row data)释放。 
57 修复: 已为数据库 'sssss' 中的对象 'dbo.MYRECORDMEMORY, IX_MYRECORDMEMORY_1' 成功地重新生成了 Nonclustered 索引。 
58 修复: 已为数据库 'sssss' 中的对象 'dbo.MYRECORDMEMORY, IX_MYRECORDMEMORY' 成功地重新生成了 Nonclustered 索引。 
59 消息 8928,级别 16,状态 1,第 1 行 
60 对象 ID 2014630220,索引 ID 0,分区 ID 132030806097920,分配单元 ID 132030806097920 (类型为 In-row data): 无法处理页 (1:1748)。有关详细信息,请参阅其他错误消息。 
61 该错误已修复。 
62 消息 8928,级别 16,状态 1,第 1 行 
63 对象 ID 2014630220,索引 ID 0,分区 ID 132030806097920,分配单元 ID 132030806097920 (类型为 In-row data): 无法处理页 (1:1749)。有关详细信息,请参阅其他错误消息。 
64 该错误已修复。 
65 消息 8928,级别 16,状态 1,第 1 行 
66 对象 ID 2014630220,索引 ID 0,分区 ID 132030806097920,分配单元 ID 132030806097920 (类型为 In-row data): 无法处理页 (1:1750)。有关详细信息,请参阅其他错误消息。 
67 该错误已修复。 
68 消息 8928,级别 16,状态 1,第 1 行 
69 对象 ID 2014630220,索引 ID 0,分区 ID 132030806097920,分配单元 ID 132030806097920 (类型为 In-row data): 无法处理页 (1:1751)。有关详细信息,请参阅其他错误消息。 
70 该错误已修复。 
71 消息 8945,级别 16,状态 1,第 1 行 
72 表错误: 将重新生成对象 ID 2014630220,索引 ID 2。 
73 该错误已修复。 
74 消息 8945,级别 16,状态 1,第 1 行 
75 表错误: 将重新生成对象 ID 2014630220,索引 ID 3。 
76 该错误已修复。 
77 CHECKDB 在表 'MYRECORDMEMORY' (对象 ID 2014630220)中发现 0 个分配错误和 4 个一致性错误。 
78 CHECKDB 在表 'MYRECORDMEMORY' (对象 ID 2014630220)中修复了 0 个分配错误和 4 个一致性错误。 
79 CHECKDB 在数据库 'db_name' 中发现 0 个分配错误和 16 个一致性错误。 
80 CHECKDB 在数据库 'db_name' 中修复了 0 个分配错误和 16 个一致性错误。
复制代码

修复完成后再查询这个表就正常了。

原文地址:https://www.cnblogs.com/shujuyr/p/13084360.html