1. 程式人生 > >一次SQLServer資料庫修復經歷

一次SQLServer資料庫修復經歷

資料庫損壞情況

資料庫有多個數據檔案及日誌檔案,其中一個數據檔案損壞丟失,後通過檔案恢復工具恢復出來,但是有錯誤,導致資料庫無法啟動。

修復步驟

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%的資料。