只有mdf和ldf檔案 如何恢複資料庫
1. 首先確認已經備份了.mdf和.ldf檔案。
2. 在SQL Server中建立一個同名的資料庫,然後停止SQL Server服務。
3. 用原有的.mdf和.ldf檔案覆蓋建立資料庫對應的.mdf和.ldf檔案。
4. 重新啟動SQL Server服務,這是應該會看到這個資料庫處於置疑(Suspect)狀態。(人品好的話,這個時候資料庫就已經恢複正常了)
5. 在SQL查詢分析器中執行以下命令,以允許更新系統資料表:
use master
go
sp_configure ‘allow updates’,1
reconfigure with override
go
6. 將這個資料庫置為緊急模式:
update sysdatabases set status = 32768 where name = 'db_name'
go
7. 使用DBCC CHECKDB命令檢查資料庫中的錯誤:
DBCC CHECKDB(‘db_name’)
GO
8. 如果DBCC CHECKDB命令失敗,請轉至第10步,否則先將資料庫置為單一使用者模式,再嘗試對其進行修複:
sp_dboption 'db_name',’single user’,’true’
DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)
GO
如果在執行DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令時提示說資料庫未處於單一使用者模式狀態的話,則重新啟動SQL Server服務,然後繼續嘗試。
9. 如果DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令失敗,請轉至第10步,否則若成功修複了資料庫中的錯誤:
重新執行DBCC CHECKDB(‘db_name’)命令,確認資料庫中已沒有錯誤存在。
清除資料庫的置疑狀態:sp_resetstatus 'db_name'
清除資料庫的單一使用者模式狀態:sp_dboption 'db_name',’single user’,’false’
重新啟動SQL Server服務,如果一切正常的話,則資料庫已經成功恢複。
10. 如果以上步驟都不能解決問題的話,請參考附件中的文檔嘗試通過重建交易記錄來恢複資料庫中的資料。
如果您只有MDF檔案,問題就更加複雜一些,我們需要直接重建交易記錄了:
1. 在SQL Server中建立一個同名的資料庫,然後停止SQL Server服務。
2. 用原有的ldf檔案覆蓋建立資料庫對應的.mdf檔案,將其記錄檔(.ldf)刪除。
3. 啟動SQL Server服務,並將資料庫置為緊急模式(同上: 步驟5和步驟6)。
4. 停止並重新啟動SQL Server服務。
5. 執行以下命令重建資料庫記錄檔:(下面是個樣本,您要用您實際的資料庫名)
DBCC REBUILD_LOG(’cas_db’, 'D:\cas_db\cas_db_Log.LDF')
6. 重新將該資料庫置為單一使用者模式。
7. 再次嘗試使用DBCC CHECKTABLE或DBCC CHECKDB命令檢查並修複資料庫中的錯誤