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