一次SQLServer資料庫修復經歷
阿新 • • 發佈:2019-01-30
資料庫損壞情況
資料庫有多個數據檔案及日誌檔案,其中一個數據檔案損壞丟失,後通過檔案恢復工具恢復出來,但是有錯誤,導致資料庫無法啟動。
修復步驟
1.首先嚐試“附加資料庫”
根據網上的資料,如果資料庫損壞不嚴重的話,可以直接通過“附加資料庫”的方式恢復,但是很不幸,嘗試失敗
不過通過“附加資料庫”得到了一條很重要的資訊,就是當選中主資料檔案MDF後,會將該資料所需的所有檔案依次列出來
並且列出的檔案順序是按照檔案ID號排序的,也就是檔案的建立順序顯示的
這就為下一步的操作提供了必要的條件
2. 新建立一個同名的資料庫,建立資料庫時,按照步驟1中列數的檔名,依次新增資料庫檔案,新增順序要嚴格按照步驟1中列出的檔名順序
檔案的邏輯名稱和物理名稱都要與原資料庫保持一致
3. 停止資料庫服務,將源資料檔案拷貝到新建立的資料庫資料檔案目錄進行覆蓋
4. 重啟資料庫
幸運的話,啟動過後會看到資料庫狀態為:“可疑”
5. 從“可疑”狀態恢復到可用狀態
依次執行以下命令,恢復資料庫
use master -- 設定為單使用者狀態 ALTER DATABASE NetcaseDB SET SINGLE_USER; GO -- 設定為緊急模式 ALTER DATABASE NetcaseDB SET EMERGENCY; GO -- 通過自帶的"CHECKDB"命令修復資料庫,允許丟資料 DBCC CHECKDB (NetcaseDB , REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS; GO -- 恢復成多使用者狀態 ALTER DATABASE NetcaseDB SET MULTI_USER; GO
6. 檢視修復後的資料庫資料
根據資料庫受損程度不同,恢復比也不同,我的實驗恢復出了大概50%的資料。