當資料庫失效時,請記錄下當前時間,然後遵循下面步驟進行恢復。
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'
)logon(
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 -
資料庫緊急恢復過程
當資料庫失效時,請記錄下當前時間,然後遵循下面步驟進行恢復。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系...