前幾天客戶那邊的服務器死機了,然后客戶強制關機,重新啟動服務器后,系統就沒法正常使用,連接不上服務器,我遠程操作后,看到數據庫標注為可疑,由於客戶之前沒備份數據庫,看來只能是修復了:
1:停止數據庫服務,將可疑的數據庫及日志備份到別的文件夾,隨后刪除數據庫文件及日志文件
2:打開數據庫服務,連接數據庫后刪除可疑的數據庫,並新建同名的數據庫(目錄位原來的目錄)
3:停止數據庫服務,將備份的數據庫文件替換新建的數據庫文件(日志文件不需要替換)
4:打開數據庫服務,連接數據庫后執行alter database 數據庫名 set emergency,將數據庫改為緊急模式, 執行后,為了保險起見,重新停止、開啟的SQLSERVER服務,再打開數據庫,已經可以看到里面的內容了,如表,視圖,存儲過程等,數據庫名稱后有緊急標志,能看到數據庫結構,但無法進行備份等操作
5:執行ALTER DATABASE 數據庫名 SET SINGLE_USER,將數據庫設為單用戶模式
6:對數據庫進行檢查修復dbcc checkdb(數據庫名,REPAIR_ALLOW_DATA_LOSS),(這里有個很奇怪的現象,最早開始修復的時候,數據庫130多G,這一步執行了6個多小時,昨天修復的時候,數據庫打到了160G,這一步只執行了43分鍾,不知道怎么回事),執行完成后會看到提示錯誤,不用管,操作后,仍然停止啟動SQLSERVER服務(不確定是否需要,我只是為了想無干擾查看執行后的數據庫狀況)重新打開數據庫,已經是正常狀態了,沒有應急提示了
7:取消單用戶模式 ALTER DATABASE 數據庫名 SET MULTI_USER
至此,數據庫修復完畢,被標記為“可疑”的數據庫已恢復正常狀態。