SQL Server 2005資料庫日誌丟失的恢複

來源:互聯網
上載者:User

標籤:

網上關於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

 

資料庫此時已可正常使用

 

原文連結:http://blog.itpub.net/10314474/viewspace-696555/

SQL Server 2005資料庫日誌丟失的恢複

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.