解決方法:SQL Server 檢測到基於一致性的邏輯 I/O 錯誤 校驗和不正


select count(*) from todayConsumeRecords
 
消息 824,級別 24,狀態 2,第 1 行 SQL Server 檢測到基於一致性的邏輯 I/O 錯誤 由於缺少 DEK,無法解密頁。在文件 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\devicesys.mdf' 中、偏移量為 0x000000dea6a000 的位置對數據庫 ID 9 中的頁 (1:455989) 執行 讀取 期間,發生了該錯誤。SQL Server 錯誤日志或系統事件日志中的其他消息可能提供了更詳細信息。這是一個威脅數據庫完整性的嚴重錯誤條件,必須立即糾正。請執行完整的數據庫一致性檢查(DBCC CHECKDB)。此錯誤可以由許多因素導致;有關詳細信息,請參閱 SQL Server 聯機叢書。

所用到的解決方法有:

1、 use devicesys

go

ALTER DATABASE devicesys SET SINGLE_USER

DBCC CHECKDB (‘devicesys’, repair_allow_data_loss) with NO_INFOMSGS

go

ALTER DATABASE devicesys SET MULTI_USER

go

失敗!

2、嘗試着新建了個數據庫tmp,並把發現數據庫錯誤時所備份的文件還原到tmp中,然后刪除devicesys 數據庫中的todayConsumeRecords表。之后把temp中的todayConsumeRecords表導入到devicesys中,當運行后出錯的那幾行時導入動作自動停止。失敗!

3、最終的解決方法:把第一方法中的SQL語句放到tmp數據庫進行運行,只花了幾秒鍾時間就提示修復成功,接着再把tmp中的todayConsumeRecords導入devicesys中,成功!

PS:第一個方法中的語句確實有效,但不懂為什么在出問題的數據庫中運行不了,要借助臨時的數據庫才行。不知網絡上的其他朋友是否也是這樣的操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM