無日志恢複SQL Server資料庫方法一 1.建立一個同名的資料庫 2.再停掉sql server(注意不要分離資料庫) 3.用原資料庫的資料檔案覆寫掉這個建立的資料庫 4.再重新開機sql server 5.此時打開企業管理器時會出現置疑,先不管,執行下面的語句(注意修改其中的資料庫名) 6.完成後一般就可以通路資料庫中的資料了,這時,資料庫本身一般還要問題,解決辦法是,利用 資料庫的腳本建立一個新的資料 庫,并将資料導進去就行了. 1. USE MASTER 2. 3. GO 4. 5. SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE 6. 7. GO 8. 9. UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的資料庫 名' 10. 11. Go 12. 13. sp_dboption '置疑的資料庫名', 'single user', 'true' 14. 15. Go 16. 17. DBCC CHECKDB('置疑的資料庫名') 18. 19. Go 20. 21. update sysdatabases set status =28 where name='置疑的資料庫名' 22. 23. Go 24. 25. sp_configure 'allow updates', 0 reconfigure with override 26. 27. Go 28. var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script); 29. sp_dboption '置疑的資料庫名', 'single user', 'false' 30. 31. Go 無日志恢複SQL Server資料庫方法二 沒有效果的恢複步驟 附加資料庫_Rambo講過被删除日志檔案中不存在活動日志時,可以這麼做來恢複: 1,分離被置疑的資料庫,可 以使用sp_detach_db 2,附加資料庫,可以使用sp_attach_single_file_db 但是,很遺憾,執行之後,SQL Server質疑資料檔案和日志檔案不符,是以無法附加資料庫資料檔案。 DTS資料導出 不行,無法讀取XXX資料庫,DTS Wizard報告說“初始化上下文發生錯誤”。 緊急模式 怡紅公子講過沒有日志用于恢複時,可以這麼做: 1,把資料庫設定為emergency mode 2, 重建立立一個log檔案 3,把SQL Server 重新啟動一下 4,把應用資料庫設定成單使用者模式 5,做DBCC CHECKDB 6,如果沒有什麼大問題就可以把資料庫狀态改回去了,記得别忘了把系統表的修改選 項關掉 我實踐了一下,把應用資料庫的資料檔案移走,重建立立一個同名的資料庫XXX,然後停掉SQL服務,把原來的資料檔案再覆 蓋回來。之後,按照怡紅公子的步驟走。 但是,也很遺憾,除了第2步之外,其他步驟執行非常成功。可惜,重新開機SQL Server之後,這個應用資料庫仍然是置疑! 不過,讓我欣慰的是,這麼做之後,倒是能夠Select資料了,讓我大出一口氣。 隻不過,元件使用資料庫時,報告說:“發生錯誤:-2147467259,未能在資料庫 'XXX' 中運作 BEGIN TRANSACTION,因為該資料庫處于回避恢複模式。” var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script); 最終成功恢複的全部步驟 設定資料庫為緊急模 式 停掉SQL Server服務; 把應用資料庫的資料檔案XXX_Data.mdf移走; 重建立立一個同名的資料庫XXX; 停掉SQL服務; 把原來的資料檔案再覆寫回來; 運作以下語句,把該資料庫設定為緊急模式; 運作 1. Use Master 2. 3. Go 4. 5. sp_configure 'allow updates', 1 6. 7. reconfigure with override 8. 9. Go 執行結果: DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理者聯系。 已将配置選項 'allow updates' 從 0 改為 1。請運作 RECONFIGURE 語句以安裝。 接着運作“update sysdatabases set status = 32768 where name = 'XXX'” 執行結果: (所影響的行數為 1 行) 重新開機SQL Server服務; 運作以下語句,把應用資料庫設定為Single User模式; 運作“sp_dboption 'XXX', 'single user', 'true'”