當服務器在正常運行的情況下突然斷電,導致數據庫文件損壞,具體表現是:數據庫名后面有“(置疑)”字樣。重新附加SQL Server 數據庫時會報錯,現在我們主要講SQL Server數據庫附加報823錯誤,我們應該怎么將數據庫修復?
錯誤 823,嚴重級別 24
消息正文
在文件 "%4!" 的偏移量 %3! 處的 %2! 過程中,檢測到 I/O 錯誤 %1!。
解釋
Microsoft SQL Server 在對某設備進行讀或寫請求時遇到 I/O 錯誤。該錯誤通常表明磁盤問題。但是,錯誤日志中在錯誤 823 之前記錄的其它核心消息應指出涉及了哪個設備。
修復辦法:
在SQL-Server企業管理器中,新建同名數據庫(這里假設為Test)后,停止數據庫,把損壞的數據庫文件Data.mdf和Test_log.LDF覆蓋剛才新建數據庫目錄下的Data.mdf和Test_log.LDF,同時刪除Test_log.LDF文件;啟動數據庫服務,發現數據庫名Test后面有“置疑”字樣。不要緊,打開SQL自帶查詢分析器,分別執行如下SQL語句:
第一、
exec sp_configure "allow updates',1 RECONFIGURE WITH OVERRIDE /* 打開修改系統表的開關 */
第二、
update sysdatabases set status=32768 where name='數據庫名' /* 設置數據庫狀態 */
第三、
DBCC REBUILD_LOG ('數據庫名','D:\database\Test_Log.LDF') /* 重建LDF文件 */
第四、
update sysdatabases set status=0 where name='數據庫名' /* 重置數據庫狀態 */
第五、
restore database 數據庫名 WITH RECOVERY /* 恢復數據庫 */
第六、
exec sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE /* 關閉打開修改系統表的開關 */
按照此方法操作,應該能修復數據庫正常訪問了。如果問題依然存在,最笨的一個方法就是新建另一個數據庫,把原數據庫(Test)各個表的數據導出到新建數據庫表中。
補充說明:用上面的六步把數據庫置疑的問題解決了,但是數據庫表里還有損壞的表(inf_gdscode),把壞表導出的時候也不成功。最后在查詢分析器里運行:
USE nmgbt_hcxuexipos (數據庫名)
GO
DBCC CHECKTABLE ('inf_gdscode',REPAIR_ALLOW_DATA_LOSS)
GO
使用以上方法,一般可以修復SQL Server數據庫附加報823錯誤,假如該方法無法修復數據庫,請及時聯系我們華軍深圳數據恢復中心,我們有更加專業的數據恢復工程師為您服務!