資料庫緊急恢復過程

2021-08-16 03:44:00 字數 3326 閱讀 2478

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

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'

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

資料庫緊急恢復過程

當資料庫失效時,請記錄下當前時間,然後遵循下面步驟進行恢復。1.備份資料庫 成功,使用備份檔案還原資料庫,轉第2步。失敗,轉第3步。2.還原資料庫 在另乙個伺服器操作 1 declare backup device nvarchar 128 log backup device nvarchar 12...

SQL Server 緊急狀態下的資料庫恢復

背景 由於伺服器硬碟損壞,伺服器異常關機。重新進入後,資料庫為質疑狀態。資料庫名字上面有個感嘆號,連線不了 第一種 1 在伺服器上停掉出問題的資料庫服務,把.mdf資料庫檔案和.ldf日誌檔案拷貝至本地。2 本地新建乙個同名資料庫,找到檔案位址,停掉sql服務後。把.mdf檔案刪掉 可以也把.ldf...

Oracle資料庫冷備份恢復過程

過程如下 通過v controlfile檢視控制檔案,通過v logfile檢視重做日誌檔案,通過v datafile檢視資料檔案,發現他們都處於同一資料夾中i oracle oradata test中,索性都複製到另一台機器的e oracle oradata test中,複製之前shutdown系...