問題背景:
客戶數據庫檢測到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 個一致性錯誤。
修復完成后再查詢這個表就正常了。