新聞中心
引言:眾所周知,由于數(shù)據(jù)庫(kù)文件里存儲(chǔ)了大量重要的信息,因此對(duì)于所有用戶(hù)來(lái)說(shuō)都是至關(guān)重要的。讓我們一起來(lái)了解一下如何通過(guò)手動(dòng)和專(zhuān)業(yè)的方法,修復(fù)那些被損壞的SQL數(shù)據(jù)庫(kù)文件吧。

成都創(chuàng)新互聯(lián)公司專(zhuān)業(yè)為企業(yè)提供克井網(wǎng)站建設(shè)、克井做網(wǎng)站、克井網(wǎng)站設(shè)計(jì)、克井網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、克井企業(yè)網(wǎng)站模板建站服務(wù),十年克井做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
如今微軟的SQL Server可謂是最常用的關(guān)系型數(shù)據(jù)庫(kù)之一了。鑒于其先進(jìn)的內(nèi)部結(jié)構(gòu)和高可靠性,大多數(shù)組織都選用SQL Server數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)所有關(guān)鍵業(yè)務(wù)的數(shù)據(jù)。但是有時(shí)候,一些諸如病毒感染、操作系統(tǒng)故障、文件系統(tǒng)損壞之類(lèi)的狀況會(huì)使得SQL數(shù)據(jù)庫(kù)受到損壞,以至于存儲(chǔ)在其中的所有數(shù)據(jù)都變得無(wú)法訪問(wèn)。然而,在真實(shí)的場(chǎng)景中,我們?cè)趽p壞的SQL Server里修復(fù)各種.mdf文件,卻并非是一件容易的事。
一般用戶(hù)可以通過(guò)手動(dòng)的方法,來(lái)逐步修復(fù)SQL數(shù)據(jù)庫(kù)中損壞的MDF文件,但是該方法并不可靠,因?yàn)樗鼰o(wú)法保證數(shù)據(jù)能夠被完全地恢復(fù)。不過(guò),也有類(lèi)似SysTools SQL Recovery這樣的第三方工具,聲稱(chēng)可以完美的方式修復(fù).mdf文件。
因此在本文中,我們將和您討論修復(fù)受損SQL數(shù)據(jù)庫(kù)的最佳解決方法。不過(guò)在開(kāi)始之前,讓我們先來(lái)了解一下SQL數(shù)據(jù)庫(kù)受損的背后原因。
SQL數(shù)據(jù)庫(kù)受損的背后原因
SQL數(shù)據(jù)庫(kù)受損的背后原因有許多種。眾所周知,SQL數(shù)據(jù)庫(kù)的各個(gè)MDF文件其實(shí)是一些主要的數(shù)據(jù)庫(kù)文件,它們存儲(chǔ)著所有用戶(hù)的數(shù)據(jù),因此任何MDF文件的損壞都可能會(huì)導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)的崩潰。可見(jiàn),我們需要首先來(lái)了解MDF文件受損背后的所有可能原因:
- MDF文件所在存儲(chǔ)介質(zhì)的損壞。
- 如果用戶(hù)將SQL數(shù)據(jù)庫(kù)存儲(chǔ)在一個(gè)壓縮的文件夾中,那么MDF文件就可能因此而被損壞。
- 在某個(gè)SQL Server帳號(hào)下,所進(jìn)行的任何修改或變更。
- 某個(gè)用戶(hù)可能對(duì)數(shù)據(jù)進(jìn)行錯(cuò)誤地刪除。
- 由于文件頭的損壞,所導(dǎo)致的MDF文件受損。
- 磁盤(pán)驅(qū)動(dòng)器受損。
- SQL數(shù)據(jù)庫(kù)正在被寫(xiě)入使用時(shí)發(fā)生了網(wǎng)絡(luò)故障,則可能會(huì)導(dǎo)致MDF文件的損壞。
- 導(dǎo)致MDF文件損壞的其他可能原因還包括:病毒攻擊、硬盤(pán)故障、系統(tǒng)異常關(guān)機(jī)和突然斷電等。
因此,如果MDF文件被損壞,那么SQL數(shù)據(jù)庫(kù)就會(huì)變得不可訪問(wèn)。另外,如果用戶(hù)試圖去訪問(wèn)已損壞的數(shù)據(jù)庫(kù),則可能會(huì)看到一些錯(cuò)誤提示消息。下面我們列出了一些最常見(jiàn)的錯(cuò)誤消息:
- MDF文件所在存儲(chǔ)介質(zhì)的損壞。
- 如果用戶(hù)將SQL數(shù)據(jù)庫(kù)存儲(chǔ)在一個(gè)壓縮的文件夾中,那么MDF文件就可能因此而被損壞。
- 元數(shù)據(jù)的損壞錯(cuò)誤。
- 用戶(hù)可能對(duì)數(shù)據(jù)進(jìn)行錯(cuò)誤地刪除。
- SQL Server中的Msg 823 / Msg 824 / Msg 825(讀取重試)錯(cuò)誤。
除此之外,用戶(hù)還可能在訪問(wèn)受損的SQL數(shù)據(jù)庫(kù)時(shí),遇到其他類(lèi)型的錯(cuò)誤提示??梢?jiàn),數(shù)據(jù)庫(kù)管理員應(yīng)當(dāng)立即采取措施,以防止任何類(lèi)型的數(shù)據(jù)丟失。
如何手動(dòng)修復(fù)MDF文件
我們可以用幾種手動(dòng)的方法來(lái)修復(fù)受損的SQL數(shù)據(jù)庫(kù),但是這些手動(dòng)解決方法是無(wú)法保證數(shù)據(jù)庫(kù)能被完全恢復(fù)的。
用戶(hù)可以使用SQL Server的NDF文件(一些日志文件)來(lái)進(jìn)行恢復(fù)。但是在大多數(shù)損壞的案例中,單憑日志文件是不足以恢復(fù)數(shù)據(jù)庫(kù)的。因?yàn)橛袝r(shí)候在一些被嚴(yán)重?fù)p壞的情況下,其對(duì)應(yīng)的備份文件也同樣遭到了破壞。
另一種可能修復(fù)和復(fù)原受損SQL數(shù)據(jù)庫(kù)的方式是使用數(shù)據(jù)庫(kù)控制臺(tái)命令,例如:DBCC CHECKDB。該命令對(duì)于修復(fù)SQL Server數(shù)據(jù)庫(kù)中的輕度損壞問(wèn)題是非常有效的。
用DBCC CHECKDB來(lái)修復(fù)受損MDF文件的步驟
首先,您需要在受損的SQL數(shù)據(jù)庫(kù)上運(yùn)行DBCC CHECKDB,請(qǐng)執(zhí)行如下的命令:
- DBCC CHECKDB (Name_of _corrupt _database)
注意:您也可以為DBCC CHECKDB定義諸如no_infomsgs和infomsgs的選項(xiàng)參數(shù)。
在此之后,您就需要開(kāi)始檢查索引ID了。
情況1:如果索引ID>1,則立刻丟棄它、并重新創(chuàng)建。
情況2:如果索引ID為0或1,則使用適當(dāng)?shù)男迯?fù)選項(xiàng),如:repair_rebuild、repair_fast或repair_allow_data_loss,來(lái)再次運(yùn)行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)
至此為確保修復(fù)了所有損壞,請(qǐng)?jiān)俅芜\(yùn)行DBCC CHECKDB。如果在name_of_your_corrupt_database中顯示為0個(gè)分配錯(cuò)誤和0個(gè)一致性錯(cuò)誤,則大功告成。
如果手動(dòng)方法失敗了呢?
由于其自身的局限性,手動(dòng)解決方法并不總是萬(wàn)無(wú)一失的。例如,MDF文件被嚴(yán)重?fù)p壞時(shí),手動(dòng)修復(fù)往往會(huì)以失敗而告終。而且,手動(dòng)解決方法需要用戶(hù)有較強(qiáng)的技術(shù)能力。因此,我們建議使用一些可靠的第三方軟件,來(lái)修復(fù)受損的SQL數(shù)據(jù)庫(kù)。SQL數(shù)據(jù)庫(kù)恢復(fù)程序(SQL Database Recovery Program)是一款最佳的實(shí)用程序,它可以修復(fù)MDF文件中任何類(lèi)型的損壞問(wèn)題。
SQL恢復(fù)工具能夠同時(shí)修復(fù)MDF和NDF兩種受損的SQL數(shù)據(jù)庫(kù)文件。它是一款無(wú)風(fēng)險(xiǎn)的軟件,可以恢復(fù)存儲(chǔ)在各種表格、規(guī)則、觸發(fā)器、以及函數(shù)中的所有數(shù)據(jù)項(xiàng)。除此之外,您只需點(diǎn)擊幾次該軟件,便可完成數(shù)據(jù)庫(kù)的修復(fù),而絕不浪費(fèi)任何時(shí)間。
修復(fù)受損MDF文件的具體步驟
下載并在本地機(jī)器上運(yùn)行SQL恢復(fù)程序。
SysTools SQL恢復(fù)工具
在此之后,您可以通過(guò)定位,來(lái)選擇并打開(kāi)受損的SQL數(shù)據(jù)庫(kù)文件(.mdf文件)。
選擇損壞的MDF文件
選擇掃描模式,然后單擊確定。
掃描模式
該工具將會(huì)為您提供一個(gè)存儲(chǔ)在受損MDF文件中的數(shù)據(jù)項(xiàng)的預(yù)覽。
查看MDF文件
點(diǎn)擊導(dǎo)出,以保存要恢復(fù)的數(shù)據(jù)庫(kù)。
導(dǎo)出MDF數(shù)據(jù)庫(kù)
結(jié)論
由于數(shù)據(jù)庫(kù)文件里存儲(chǔ)了大量重要的信息,因此對(duì)于所有用戶(hù)來(lái)說(shuō)都是至關(guān)重要的。然而SQL數(shù)據(jù)庫(kù)中任何類(lèi)型的損壞問(wèn)題,都可能會(huì)給用戶(hù)造成巨大的麻煩。為了應(yīng)對(duì)和克服各種可能出現(xiàn)的問(wèn)題,我們通過(guò)上述的討論,向您提供了運(yùn)用手動(dòng)和專(zhuān)業(yè)的解決方法,來(lái)修復(fù)那些受損的SQL數(shù)據(jù)庫(kù)文件。
本文標(biāo)題:如何在SQL Server數(shù)據(jù)庫(kù)中完全修復(fù)MDF文件
分享網(wǎng)址:http://m.fisionsoft.com.cn/article/djgpheg.html


咨詢(xún)
建站咨詢(xún)
