SQL Server災難恢復

newdayhope發表於2005-02-19

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_dbcas_db_Log.LDF')

6. 重新將該資料庫置為單使用者模式。()

7. 再次嘗試使用DBCC CHECKTABLE或DBCC CHECKDB命令檢查並修復資料庫中的錯誤。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/181629/viewspace-790348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章