SQL Server 2005資料庫日誌丟失的恢復
網上關於SQL Server 2005資料庫日誌丟失的處理方法基本上都是修改資料庫系統表,但是我測試N多遍都不成功,最後用英文關鍵字Google了下,發現一個可行方法,折磨了我兩天的問題得以解決。。。
背景說明:名為testdb的資料庫丟失了日誌檔案,僅有資料檔案testdb.mdf
請先不要急於開始操作,如果你真的很急,請直接看我的成功試驗方法(*下面的內容)
1.新建資料庫testdb
2.停掉SQL Server伺服器
3.刪除剛剛建立好的testdb的日誌檔案testdb_log.ldf,將資料檔案替換成上面提到的待恢復的資料庫的資料檔案testdb.mdf
4.啟動SQL Server伺服器,在Management Studio中重新連線,發現testdb資料庫仍不可用
5.設定資料庫的系統表為可修改
sp_configure 'allow updates',1
reconfigure with override
6.設定TEST為緊急修復模式
update sysdatabases set status=-32768 where dbid=DB_ID('testdb')
訊息259,層級16,狀態1,行1
不允許對系統目錄的特定更新。(即不允許更新系統表)
此時需要利用DAC登入SQL Server進行修改,登入方式見http://space.itpub.net/10314474/viewspace-696409
設定SQL Server為single_user 模式
D:\Documents and Settings\USERNAME>net stop "SQL Server (MSSQLSERVER)"
D:\Documents and Settings\USERNAME>net start "SQL Server (MSSQLSERVER)" /m
本以為到這裡就看到了勝利的曙光,誰知又報錯
訊息4406,層級16,狀態1,行1
由於內含衍生或常數欄位,導致檢視或函式'sys.sysdatabases' 的更新或插入失敗。
這個問題困擾了我很久,我想通過修改系統表的這種方法應該是不可行的了。
(*******以上方法在網上廣為流傳,但我自己並未測試成功,不知是否有人成功過*******)
***********************
以下方法經本人三次測試均成功:
當然方法的宗旨都是一樣:重建日誌檔案
1.首先檢視下資料庫此時的狀態
select name,state,state_desc from sys.databases where name = 'testdb'
name state state_desc
testdb 3 RECOVERY_PENDING
2.設定資料庫為緊急模式
ALTER DATABASE testdb SET EMERGENCY
select name,state,state_desc from sys.databases where name = 'testdb'
name state state_desc
testdb 5 EMERGENCY
3.設定資料庫為單使用者模式
ALTER DATABASE testdb SET SINGLE_USER WITH ROLLBACK IMMEDIATE
4.重建日誌檔案
DBCC CHECKDB('testdb',REPAIR_ALLOW_DATA_LOSS)
返回的結果資訊:檔案啟動錯誤。實體檔案名稱"D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\testdb_log.ldf" 可能不正確。
警告: 資料庫'testdb' 的記錄已經重建。已遺失交易一致性。RESTORE 鏈已中斷,伺服器已經沒有先前記錄檔的內容,因此您必須知道這些內容。應該執行DBCC CHECKDB 來驗證實體一致性。資料庫已進入僅限DBO 模式。您準備好讓資料庫能供使用後,必須重設資料庫選項,並刪除任何額外的記錄檔。
5.檢查資料庫狀態
select name,state,state_desc from sys.databases where name = 'testdb'
name state state_desc
TEST 0 ONLINE
6.將資料庫由單使用者模式修改為多使用者模式
ALTER DATABASE testdb SET MULTI_USER
資料庫此時已可正常使用
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10314474/viewspace-696555/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- oracle歸檔日誌丟失後的資料庫恢復Oracle資料庫
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- SQL Server無日誌資料庫恢復模式SQLServer資料庫模式
- 丟失已歸檔日誌檔案下恢復資料庫資料庫
- 【恢復】Redo日誌檔案丟失的恢復
- 丟失當前current重做日誌檔案下恢復資料庫資料庫
- 解決Oracle資料庫日誌檔案丟失恢復問題Oracle資料庫
- rman恢復--丟失聯機重做日誌的恢復
- 聯機重做日誌丟失的恢復
- 丟失非活動日誌組的恢復
- Sql server日誌損壞後的資料恢復(轉)SQLServer資料恢復
- SQL Server資料庫恢復,SQL Server資料恢復,SQL Server資料誤刪除恢復工具SQLRescueSQLServer資料庫資料恢復
- 利用incremental backup恢復丟失日誌的standbyREM
- oracle丟失日誌檔案的恢復( 轉)Oracle
- Sqlserver系統資料庫和使用者資料庫日誌檔案全部丟失的恢復SQLServer資料庫
- 從丟失日誌組中恢復流程
- oracle 線上日誌全部丟失的資料恢復Oracle資料恢復
- 查詢SQL Server 2005資料庫重做日誌的資訊SQLServer資料庫
- SQL Server 2005無日誌檔案附加資料庫SQLServer資料庫
- 恢復REDO Log丟失的Oracle資料庫Oracle資料庫
- 非歸檔丟失日誌檔案的恢復
- 丟失聯機重做日誌檔案的恢復
- 沒備份,歸檔日誌存在,丟失資料檔案的恢復
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 清除SQL Server資料庫日誌SQLServer資料庫
- 【備份恢復】恢復 丟失已歸檔重做日誌檔案
- RMAN恢復案例:無恢復目錄,丟失全部資料檔案、控制檔案、日誌檔案恢復
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 資料檔案丟失的恢復
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- 硬碟資料丟失如何恢復?硬碟
- 分割槽丟失資料恢復資料恢復
- SQL Server 系統資料庫恢復SQLServer資料庫
- sqlplus 下恢復active 日誌丟失的情況SQL
- 在歸檔模式下丟失日誌檔案的恢復模式
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB