當前位置:
首頁 > 最新 > 資料庫緊急恢復過程

資料庫緊急恢復過程

GIF

當資料庫失效時,請記錄下當前時間,然後遵循下面步驟進行恢復。

1. 備份資料庫

成功,使用備份文件還原資料庫,轉第2步。

失敗,轉第3步。

2. 還原資料庫(在另一個伺服器操作)

(1)DECLARE @backup_device nvarchar(128), @log_backup_device nvarchar(128)

set @backup_device = N"F:/database/myDb.bak"

restore database MyDb

from disk = @backup_device

WITH REPLACE , file=5

(2)根據事務日誌來恢復到具體某個時間點

--首先基於一個完全備份點開始做事務日誌還原,注意[NORECOVERY]參數

RESTORE database (資料庫名) from 完全備份設備名with REPLACE,NORECOVERY,

MOVE "MyDb" TO "D:/FMyDb_0606.mdf",

MOVE "FMyDb_Log" TO "D:/FMyDb_Log_0606.ldf"

--開始事務日誌

A.查看事務日誌點:RESTORE HEADERONLY from disk="事務日誌的備份的文件完全路徑或備份設備名"

B.開始恢復

restore LOG 資料庫名from事務日誌備份設備名with FILE=1, NORECOVERY

restore LOG 資料庫名from事務日誌備份設備名with FILE=2, NORECOVERY

restore LOG 資料庫名from事務日誌備份設備名with FILE=3,NORECOVERY --倒數第二個備份日誌

restore LOG 資料庫名from事務日誌備份設備名with FILE=4,RECOVERY --最後一個備份日誌

執行失敗的話,轉下一步。

3. 複製資料庫mdb, ldf文件

執行 net stop mssqlserver 停止SQL Server服務,複製資料庫mdb, ldf文件。

成功複製2個文件已經其他文件組,轉第4步。

只能複製mdb文件,轉第5步。

只能複製ldf文件,轉第8步。

4. 附加資料庫(資料庫文件與日誌文件)

CREATE DATABASE [MyDb2] ON

( FILENAME = N"F:/back/MyDb.mdf" )

,( FILENAME = N"F:/back/MyDb_log.ldf" )

FOR ATTACH

如果出現失敗,轉第5步。

5. 附加資料庫(只有資料庫文件)

CREATE DATABASE [MyDb2] ON

( FILENAME = N"F:/back/MyDb.mdf" )

FOR ATTACH_REBUILD_LOG

如果失敗,在SQL2000下,可以嘗試(2005版本沒有該功能)

dbcc rebuild_log("MyDb","F:/MyDb_log.ldf")

轉第6步。

當伺服器因為硬體失敗導致資料庫失效時,可能出現以下錯誤,轉第6步:

文件激活失敗。物理文件名稱"f:/database/MyDb/MyDb_log.ldf"可能不正確。

由於資料庫沒有完全關閉,無法重新生成日誌。

6. 強制附加資料庫

a) 新建一個同名資料庫

CREATE DATABASE [MyDb_temp]

ON (NAME=MyDb_temp, FILENAME = N"F:/temp/MyDb.mdf" )

LOG ON (NAME=MyDb_temp _Log, FILENAME = N"F:/temp/MyDb_log.ldf")

b) 停止SqlServer

c) 將備份的資料庫覆蓋F:/temp/MyDb.mdf

d) 啟動SqlServer,(MyDb_temp將變為不可用)

查看資料庫狀態

SELECT * FROM SYS.DATABASES

SELECT * FROM sys.database_recovery_status

e) 將資料庫改為緊急恢復模式

ALTER DATABASE MyDb SET EMERGENCY

f) 修復資料庫

DBCC CheckDB ("MyDb")

g) 將資料庫改為但用戶模式

ALTER DATABASE MyDb SET SINGLE_USER

h) 再帶參數修復資料庫

DBCC CheckDB ("MyDb", REPAIR_REBUILD )

i) 將資料庫改為正常模式

ALTER DATABASE MyDb SET ONLINE

如果無法創建資料庫日誌,i步驟將失敗,這時候如果能看到資料庫表,和進行Select操作,轉第7步。

7. 提取資料庫數據

a) 創建一個新的臨時資料庫

b) 導出數據

執行 SELECT "SELECT * INTO MyDb2.."+name+" FROM "+ name FROM sys.objects WHERE TYPE = "U" AND name!="sysdiagrams"

產生數據導出語句,執行他們,將數據複製到新資料庫

c) 導出存儲過程:待續

d) 導出觸發器:待續

e) 導出函數:待續

f) 導出自定義數據類型:待續

g) 導出用戶:待續

h) 將新資料庫還原到目標伺服器

備份/還原這個新建的資料庫到目標伺服器

i) 修復孤立用戶(SQL 2005 版)

a) EXEC sp_change_users_login "Auto_Fix", "GameServer";

b) EXEC sp_change_users_login "Auto_Fix", "backoffice";

c) EXEC sp_change_users_login "Auto_Fix", "adminsoft";

j) 修復資料庫擁有者

EXEC sp_changedbowner "sa"

總結:還是定時備份好。。。

- THE END -

更多相關資訊可以關注西安華美校區,免費獲得java零基礎教程!額外附送excel教程!

GIF


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 西安北大青鳥華美 的精彩文章:

TAG:西安北大青鳥華美 |