解決方法:SQL Server 檢測(cè)到基于一致性的邏輯 I/O 錯(cuò)誤校驗(yàn)和不正
廣告:
select count(*) from todayConsumeRecords
消息 824,級(jí)別 24,狀態(tài) 2,第 1 行 SQL Server 檢測(cè)到基于一致性的邏輯 I/O 錯(cuò)誤 由于缺少 DEK,無(wú)法解密頁(yè)。在文件 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\devicesys.mdf' 中、偏移量為 0x000000dea6a000 的位置對(duì)數(shù)據(jù)庫(kù) ID 9 中的頁(yè) (1:455989) 執(zhí)行 讀取 期間,發(fā)生了該錯(cuò)誤。SQL Server 錯(cuò)誤日志或系統(tǒng)事件日志中的其他消息可能提供了更詳細(xì)信息。這是一個(gè)威脅數(shù)據(jù)庫(kù)完整性的嚴(yán)重錯(cuò)誤條件,必須立即糾正。請(qǐng)執(zhí)行完整的數(shù)據(jù)庫(kù)一致性檢查(DBCC CHECKDB)。此錯(cuò)誤可以由許多因素導(dǎo)致;有關(guān)詳細(xì)信息,請(qǐng)參閱 SQL Server 聯(lián)機(jī)叢書。
所用到的解決方法有:
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、嘗試著新建了個(gè)數(shù)據(jù)庫(kù)tmp,并把發(fā)現(xiàn)數(shù)據(jù)庫(kù)錯(cuò)誤時(shí)所備份的文件還原到tmp中,然后刪除devicesys 數(shù)據(jù)庫(kù)中的todayConsumeRecords表。之后把temp中的todayConsumeRecords表導(dǎo)入到devicesys中,當(dāng)運(yùn)行后出錯(cuò)的那幾行時(shí)導(dǎo)入動(dòng)作自動(dòng)停止。失敗!
3、最終的解決方法:把第一方法中的SQL語(yǔ)句放到tmp數(shù)據(jù)庫(kù)進(jìn)行運(yùn)行,只花了幾秒鐘時(shí)間就提示修復(fù)成功,接著再把tmp中的todayConsumeRecords導(dǎo)入devicesys中,成功!
PS:第一個(gè)方法中的語(yǔ)句確實(shí)有效,但不懂為什么在出問(wèn)題的數(shù)據(jù)庫(kù)中運(yùn)行不了,要借助臨時(shí)的數(shù)據(jù)庫(kù)才行。不知網(wǎng)絡(luò)上的其他朋友是否也是這樣的操作。
廣告: