今天看到一篇相當實用的實戰文章,轉貼到此留存,想必未來一定能派上用場!
本文轉貼自 <http://www.dotblogs.com.tw/ricochen/archive/2010/01/11/12962.aspx>
今天一大早就遇到SQL Server硬碟壞軌,不過是開發環境所以也沒麼痛~哈。
DB相關Ldf檔案雖然都在壞軌硬碟中(OS也掛XD),但還好Mdf檔案存放在另一顆硬碟
所以就在換了一顆硬碟並安裝WIN2008+SQL2008完畢後
便可開始還原相關資料庫(好加在前些時候才演練過相關防災操作)
事前確認作業
1.存放Ldf路徑須相同。
如:舊路徑(D:\ldfdata),那麼新硬碟也需存在。
開始還原資料庫
1.建立新資料庫(Mdf和Ldf檔案名稱須和舊檔案相同)
(無相關Table objects)
2.複製舊MDF檔案至相關路徑
先停止SQL Server並刪除New MDF and LDF後再開始複製舊MDF檔案至相關目錄
完成後再啟動SQL SERVER並嘗試開啟資料庫會出現以下錯誤。
ALTER DATABASE demotest SET ONLINE; GO
(因為檔案被我們刪除了)
這時查看DB Status
select state_desc from sys.databases where name='demotest'
3.設定資料庫=EMERGENCY
EMERGENCY 主要用於進行疑難排解。例如,由於記錄檔損毀而被標示有疑問的資料庫可以設為 EMERGENCY 狀態。
在這個情況下,系統管理員可以進行資料庫的唯讀存取。只有系統管理員 (sysadmin) 固定伺服器角色的成員,
才能將資料庫的狀態設為 EMERGENCY。
ALTER DATABASE demotest SET EMERGENCY; GO DBCC CHECKDB (demotest, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS; GO
依錯誤訊息切換單一使用者模式
ALTER DATABASE demotest SET SINGLE_USER; GO DBCC CHECKDB (demotest, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS; GO
執行到這裡相關Ldf以重新建立,不過會遺失交易一致性(就是指DB Checkpoint時間點以內都可回復)。
4.再度確認DB Status
select state_desc from sys.databases where name='demotest'
5.檢查DB所有物件的邏輯完整性和實體完整性並更新統計值
6.確認資料庫相關物件
搞定收工。
沒有留言:
張貼留言