最近網站更換到云服務器,之后每運行一段時間,有可能是幾個小時,有可能是一兩天,就會出現論壇的帖子串列無法顯示出來,串列下面出現錯誤 System.Data.SqlClient.SqlException: 警告: 嚴重錯誤 823 發生于 08 27 2020 2:18PM 之后進服務器打開事件查看器的“應用程式”,里面會有很多錯誤提示: 錯誤: 823,嚴重度: 24,狀態: 2
I/O error (bad page ID) detected during read at offset 0x0000007f0c4000 in file 'D:\sjk\aaaaa_Data.MDF'.
在網上搜索了很多方法,最后用下面的SQL陳述句解決:
USE MASTER
GO
sp_dboption '資料庫名', 'single user', 'true'
Go
DBCC CHECKDB('資料庫名', REPAIR_ALLOW_DATA_LOSS)
Go
USE '資料庫名'
go
exec sp_msforeachtable 'DBCC CHECKTABLE('',?,'',REPAIR_REBUILD)'
go
sp_dboption '資料庫名', 'single user', 'false'
Go
但是過了幾小時或者幾天,上面的錯誤又會出現,最后我發現只要把資料庫關閉,再打開,這個錯誤一樣可以修復。但是修復了,還是會出現,這個問題真的很頭大,希望知道的兄弟幫忙解決下。謝謝!
uj5u.com熱心網友回復:
要用專業商用資料庫系統,哪怕是專業的嵌入式資料庫(但是嵌入式庫決不能濫用為多用戶庫)。不要使用那些早在15年前就被微軟淘汰的 office 之類“資料庫”,那些主要是用在人家微軟的本地、單機程式中的,不要用在別的地方。基本上如果你發現通過網路映射磁盤路徑訪問會造成檔案損壞,或者是多行程訪問時經常頻繁因為某個行程的宕機而檔案損壞,那么其實這是“常事兒”。其出發點,就好像是水田的小蝦被放入大海,超過了程式設計能力范圍。uj5u.com熱心網友回復:
你的所謂“修復資料庫”,這類做法其實就是丟棄檔案中的一些資料鏈接內容而重寫檔案已。這在正規的開發中是不可接受的,只有在15、20年前的一些個人軟體才會這樣做。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/11486.html
標籤:VB.NET
