如何在SQL Server數據庫中完全修復MDF文件
譯文【51CTO.com快譯】引言:眾所周知,由于數據庫文件里存儲了大量重要的信息,因此對于所有用戶來說都是至關重要的。讓我們一起來了解一下如何通過手動和專業的方法,修復那些被損壞的SQL數據庫文件吧。
如今微軟的SQL Server可謂是最常用的關系型數據庫之一了。鑒于其先進的內部結構和高可靠性,大多數組織都選用SQL Server數據庫來存儲所有關鍵業務的數據。但是有時候,一些諸如病毒感染、操作系統故障、文件系統損壞之類的狀況會使得SQL數據庫受到損壞,以至于存儲在其中的所有數據都變得無法訪問。然而,在真實的場景中,我們在損壞的SQL Server里修復各種.mdf文件,卻并非是一件容易的事。
一般用戶可以通過手動的方法,來逐步修復SQL數據庫中損壞的MDF文件,但是該方法并不可靠,因為它無法保證數據能夠被完全地恢復。不過,也有類似SysTools SQL Recovery這樣的第三方工具,聲稱可以完美的方式修復.mdf文件。
因此在本文中,我們將和您討論修復受損SQL數據庫的最佳解決方法。不過在開始之前,讓我們先來了解一下SQL數據庫受損的背后原因。
SQL數據庫受損的背后原因
SQL數據庫受損的背后原因有許多種。眾所周知,SQL數據庫的各個MDF文件其實是一些主要的數據庫文件,它們存儲著所有用戶的數據,因此任何MDF文件的損壞都可能會導致整個數據庫的崩潰??梢姡覀冃枰紫葋砹私釳DF文件受損背后的所有可能原因:
- MDF文件所在存儲介質的損壞。
- 如果用戶將SQL數據庫存儲在一個壓縮的文件夾中,那么MDF文件就可能因此而被損壞。
- 在某個SQL Server帳號下,所進行的任何修改或變更。
- 某個用戶可能對數據進行錯誤地刪除。
- 由于文件頭的損壞,所導致的MDF文件受損。
- 磁盤驅動器受損。
- SQL數據庫正在被寫入使用時發生了網絡故障,則可能會導致MDF文件的損壞。
- 導致MDF文件損壞的其他可能原因還包括:病毒攻擊、硬盤故障、系統異常關機和突然斷電等。
因此,如果MDF文件被損壞,那么SQL數據庫就會變得不可訪問。另外,如果用戶試圖去訪問已損壞的數據庫,則可能會看到一些錯誤提示消息。下面我們列出了一些最常見的錯誤消息:
- MDF文件所在存儲介質的損壞。
- 如果用戶將SQL數據庫存儲在一個壓縮的文件夾中,那么MDF文件就可能因此而被損壞。
- 元數據的損壞錯誤。
- 用戶可能對數據進行錯誤地刪除。
- SQL Server中的Msg 823 / Msg 824 / Msg 825(讀取重試)錯誤。
除此之外,用戶還可能在訪問受損的SQL數據庫時,遇到其他類型的錯誤提示。可見,數據庫管理員應當立即采取措施,以防止任何類型的數據丟失。
如何手動修復MDF文件
我們可以用幾種手動的方法來修復受損的SQL數據庫,但是這些手動解決方法是無法保證數據庫能被完全恢復的。
用戶可以使用SQL Server的NDF文件(一些日志文件)來進行恢復。但是在大多數損壞的案例中,單憑日志文件是不足以恢復數據庫的。因為有時候在一些被嚴重損壞的情況下,其對應的備份文件也同樣遭到了破壞。
另一種可能修復和復原受損SQL數據庫的方式是使用數據庫控制臺命令,例如:DBCC CHECKDB。該命令對于修復SQL Server數據庫中的輕度損壞問題是非常有效的。
用DBCC CHECKDB來修復受損MDF文件的步驟
首先,您需要在受損的SQL數據庫上運行DBCC CHECKDB,請執行如下的命令:
- DBCC CHECKDB (Name_of _corrupt _database)
注意:您也可以為DBCC CHECKDB定義諸如no_infomsgs和infomsgs的選項參數。
在此之后,您就需要開始檢查索引ID了。
情況1:如果索引ID>1,則立刻丟棄它、并重新創建。
情況2:如果索引ID為0或1,則使用適當的修復選項,如:repair_rebuild、repair_fast或repair_allow_data_loss,來再次運行DBCC CHECKDB。
- DBCC CHECK (name_of_corrupt_database, repair_fast)
- DBCC CHECK (name_of_corrupt_database, repair_rebuild)
- DBCC CHECK (name_of_corrupt_database, repair_allow_data_loss)
至此為確保修復了所有損壞,請再次運行DBCC CHECKDB。如果在name_of_your_corrupt_database中顯示為0個分配錯誤和0個一致性錯誤,則大功告成。
如果手動方法失敗了呢?
由于其自身的局限性,手動解決方法并不總是萬無一失的。例如,MDF文件被嚴重損壞時,手動修復往往會以失敗而告終。而且,手動解決方法需要用戶有較強的技術能力。因此,我們建議使用一些可靠的第三方軟件,來修復受損的SQL數據庫。SQL數據庫恢復程序(SQL Database Recovery Program)是一款最佳的實用程序,它可以修復MDF文件中任何類型的損壞問題。
SQL恢復工具能夠同時修復MDF和NDF兩種受損的SQL數據庫文件。它是一款無風險的軟件,可以恢復存儲在各種表格、規則、觸發器、以及函數中的所有數據項。除此之外,您只需點擊幾次該軟件,便可完成數據庫的修復,而絕不浪費任何時間。
修復受損MDF文件的具體步驟
下載并在本地機器上運行SQL恢復程序。
SysTools SQL恢復工具
在此之后,您可以通過定位,來選擇并打開受損的SQL數據庫文件(.mdf文件)。
選擇損壞的MDF文件
選擇掃描模式,然后單擊確定。
掃描模式
該工具將會為您提供一個存儲在受損MDF文件中的數據項的預覽。
查看MDF文件
點擊導出,以保存要恢復的數據庫。
導出MDF數據庫
結論
由于數據庫文件里存儲了大量重要的信息,因此對于所有用戶來說都是至關重要的。然而SQL數據庫中任何類型的損壞問題,都可能會給用戶造成巨大的麻煩。為了應對和克服各種可能出現的問題,我們通過上述的討論,向您提供了運用手動和專業的解決方法,來修復那些受損的SQL數據庫文件。
原文標題:How to Repair MDF Files in SQL Server Database,作者:John Walker
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】
























