達(dá)思:SQL Server數(shù)據(jù)庫(kù)修復(fù)高手之路
微軟的SQL Server 數(shù)據(jù)庫(kù)最常用的有兩種類型的文件:
1、主要數(shù)據(jù)文件,文件后綴一般是.MDF;
2、事務(wù)日志文件,文件后綴一般是.LDF。
用戶數(shù)據(jù)表、視圖、存儲(chǔ)過(guò)程等等數(shù)據(jù),都是存放在MDF文件里,LDF文件是存放MS SQL Server操作過(guò)程中的日志記錄。
MDF文件必讀附加到MS SQL Server數(shù)據(jù)庫(kù)環(huán)境后,才能正常讀取其中的數(shù)據(jù)。當(dāng)由于某種原因數(shù)據(jù)庫(kù)附加不上,MDF數(shù)據(jù)庫(kù)文件的內(nèi)容就沒(méi)辦法讀取,數(shù)據(jù)庫(kù)修復(fù)的方法有:
1、 使用MS SQL Server環(huán)境進(jìn)行修復(fù),先以修復(fù)模式掛載數(shù)據(jù)庫(kù),然后以單用戶模式對(duì)數(shù)據(jù)庫(kù)進(jìn)行修復(fù),運(yùn)氣好的話,數(shù)據(jù)庫(kù)就能修復(fù)成功。
2、 用第三方工具直接讀取MDF數(shù)據(jù)文件,把數(shù)據(jù)表、視圖、存儲(chǔ)過(guò)程等提取出來(lái),然后還原到新建的數(shù)據(jù)庫(kù)中。
D-Recovey For MS SQL Server達(dá)思sql數(shù)據(jù)庫(kù)修復(fù)軟件就是能直接讀取MDF數(shù)據(jù)文件的工具,即便用上述第一種方法沒(méi)有恢復(fù)成功的情況下,D-Recovey For MS SQL Server有時(shí)候也能讀取出MDF數(shù)據(jù)文件中的數(shù)據(jù)。下面我們來(lái)介紹D-Recovey For MS SQL Server的一些數(shù)據(jù)恢復(fù)功能。
我們先來(lái)看一下數(shù)據(jù)庫(kù)損壞的幾種情況:
1、 由于斷電等原因?qū)е聰?shù)據(jù)庫(kù)質(zhì)疑,這是一種較為常見的MS SQL Server數(shù)據(jù)庫(kù)損壞的情況,這種情況在上述第一種修復(fù)方法往往能修復(fù)好,但也有修不好的可能。
圖一:sql數(shù)據(jù)庫(kù)置疑錯(cuò)誤很常見
2、 數(shù)據(jù)庫(kù)附加錯(cuò)誤,最常見的如下圖:
圖二:sql數(shù)據(jù)庫(kù)823錯(cuò)誤是主要的數(shù)據(jù)庫(kù)附加錯(cuò)誤
3、 數(shù)據(jù)表查詢錯(cuò)誤,如下圖:
圖三:數(shù)據(jù)表查詢報(bào)錯(cuò)也很常見
數(shù)據(jù)庫(kù)報(bào)823錯(cuò)誤通常是數(shù)據(jù)頁(yè)面校驗(yàn)沒(méi)有通過(guò),一般是由于壞道、突然斷電、數(shù)據(jù)覆蓋等原因引起的,有些情況下數(shù)據(jù)庫(kù)能附加,但是查詢某個(gè)表的時(shí)候報(bào)823錯(cuò)誤,用MS SQL Server數(shù)據(jù)庫(kù)環(huán)境也修復(fù)不好。D-Recovey For MS SQL Server對(duì)于823錯(cuò)誤處理效果不錯(cuò)。
D-Recovey For MS SQL Server具備如下恢復(fù)功能:
1、能恢復(fù)由于斷電及別的原因引起的數(shù)據(jù)庫(kù)狀態(tài)變成質(zhì)疑而損壞的MDF文件
2、能恢復(fù)磁盤壞道及別的原因引起的數(shù)據(jù)庫(kù)無(wú)法正常附加而損壞的MDF文件
3、能恢復(fù)數(shù)據(jù)庫(kù)狀態(tài)正常而某些數(shù)據(jù)表查詢出錯(cuò)造成的數(shù)據(jù)丟失情況的數(shù)據(jù)
4、能恢復(fù)通過(guò)MDF文件碎片組合(手工提取)而成的MDF文件中的數(shù)據(jù)
圖四:達(dá)思sql數(shù)據(jù)庫(kù)修復(fù)軟件盒裝版
D-Recovey For MS SQL Server軟件界面如下
圖五:達(dá)思sql數(shù)據(jù)庫(kù)修復(fù)軟件界面
D-Recovey For MS SQL Server的界面設(shè)計(jì)按照MS SQL Server企業(yè)管理器使用習(xí)慣來(lái)進(jìn)行,左邊窗口顯示的是數(shù)數(shù)據(jù)表、視圖、存儲(chǔ)過(guò)程、用戶自定義函數(shù)、用戶自定義數(shù)據(jù)類型,點(diǎn)擊數(shù)據(jù)表,就能看到所有數(shù)據(jù)表名稱,數(shù)據(jù)表“+”號(hào)展開后,可以看到數(shù)據(jù)表字段信息等,點(diǎn)擊某個(gè)表,右邊窗口就顯示該數(shù)據(jù)表的數(shù)據(jù)記錄信息,如果某個(gè)數(shù)據(jù)表記錄比較多,可以通過(guò)下一頁(yè)、上一頁(yè)進(jìn)行翻頁(yè)顯示。
細(xì)心觀察的朋友會(huì)發(fā)現(xiàn),每一頁(yè)顯示的記錄條數(shù)可能不一樣,這是程序設(shè)計(jì)的時(shí)候,按照一定的數(shù)據(jù)頁(yè)面來(lái)顯示的,比如沒(méi)個(gè)顯示頁(yè)讀取64個(gè)數(shù)據(jù)頁(yè)面(data page),在MDF文件中,每個(gè)data page的數(shù)據(jù)記錄數(shù)量不一定相等,所以顯示出來(lái)的記錄數(shù)量就會(huì)有差異。
D-Recovey For MS SQL Server數(shù)據(jù)庫(kù)恢復(fù)步驟:
1、打開MDF文件,選擇數(shù)據(jù)庫(kù)版本
圖六:選擇sql數(shù)據(jù)庫(kù)版本
2、打開完以后,左邊顯示數(shù)據(jù)表、視圖、存儲(chǔ)過(guò)程、用戶自定義函數(shù)、用戶自定義數(shù)據(jù)類型,點(diǎn)擊“+”可展開,點(diǎn)擊左邊某個(gè)表,右邊列出表記錄。
圖七:輕松展開損壞的sql數(shù)據(jù)庫(kù)文件
把數(shù)據(jù)恢復(fù)成腳本文件
數(shù)據(jù)恢復(fù)功能中的導(dǎo)出所有表結(jié)構(gòu)、導(dǎo)出選中表結(jié)構(gòu)是把數(shù)據(jù)庫(kù)的表結(jié)構(gòu)導(dǎo)出來(lái),保存成.sql文件,這是一個(gè)包含sql語(yǔ)句格式的文本文件,用戶可以在MS SQL Server中運(yùn)行這些sql語(yǔ)句文件,就能創(chuàng)建出數(shù)據(jù)表。
導(dǎo)出所有表數(shù)據(jù)和導(dǎo)出選中表數(shù)據(jù)是把表數(shù)據(jù)導(dǎo)出來(lái),保存成sql語(yǔ)句文件,用戶可以把這些sql語(yǔ)句文件在MS SQL Server查詢分析器中運(yùn)行,把相應(yīng)表中的數(shù)據(jù)恢復(fù)到MS SQL Server中。值得注意的是,數(shù)據(jù)庫(kù)全部保存成sql文件以后,程序生成一個(gè)commit.bat批處理文件,運(yùn)行這個(gè)commit.bat批處理文件,填寫數(shù)據(jù)要導(dǎo)入的目標(biāo)數(shù)據(jù)庫(kù)用戶名和密碼以及數(shù)據(jù)庫(kù)服務(wù)器IP地址和目標(biāo)數(shù)據(jù)庫(kù)名稱,然后批處理文件會(huì)自動(dòng)把所有sql語(yǔ)句文件導(dǎo)入到目標(biāo)數(shù)據(jù)庫(kù)中。
把數(shù)據(jù)恢復(fù)到新的數(shù)據(jù)庫(kù)中
數(shù)據(jù)庫(kù)恢復(fù)中最實(shí)用的功能就是把看到的數(shù)據(jù)表中的數(shù)據(jù)直接導(dǎo)入MS SQL Server新建的數(shù)據(jù)庫(kù)中。加入我們要恢復(fù)一個(gè)a.mdf文件,我們要把a(bǔ).mdf文件中的所有數(shù)據(jù)恢復(fù)到數(shù)據(jù)庫(kù)服務(wù)器127.0.0.1上的DSTtest數(shù)據(jù)庫(kù)中,就要點(diǎn)擊D-Recovey For MS SQL Server的“把所有表導(dǎo)入數(shù)據(jù)庫(kù)”這個(gè)按鈕,就彈出如下對(duì)話框,我們把數(shù)據(jù)庫(kù)服務(wù)器IP地址、數(shù)據(jù)庫(kù)名稱、連接數(shù)據(jù)庫(kù)的用戶名和密碼,然后點(diǎn)擊確定,a.mdf文件中的數(shù)據(jù)就自動(dòng)導(dǎo)入到DSTtest中。
圖八:達(dá)思sql數(shù)據(jù)庫(kù)修復(fù)軟件可以吧數(shù)據(jù)恢復(fù)到數(shù)據(jù)庫(kù)中
D-Recovey For MS SQL Server還具備檢測(cè)MDF數(shù)據(jù)文件數(shù)據(jù)頁(yè)面是否正確的功能。
點(diǎn)擊“檢查數(shù)據(jù)庫(kù)文件”按鈕,出來(lái)如下對(duì)話框,我們先擇一個(gè)mdf文件,開始檢測(cè),在檢測(cè)過(guò)程中,我們注意“null page”(即空數(shù)據(jù)頁(yè))和“err page”(即錯(cuò)誤數(shù)據(jù)頁(yè))數(shù)量的變化,如果錯(cuò)誤數(shù)據(jù)頁(yè)特別多,那這個(gè)mdf文件損壞就比較嚴(yán)重。
圖九:達(dá)思sql數(shù)據(jù)庫(kù)修復(fù)軟件具有數(shù)據(jù)庫(kù)檢測(cè)功能
MS SQL Server數(shù)據(jù)庫(kù)另外一種常見的恢復(fù)方法是通過(guò)提取MDF數(shù)據(jù)頁(yè)面,然后整合拼接成一個(gè)MDF數(shù)據(jù)文件,通過(guò)這種方式恢復(fù)一般很少能附加到數(shù)據(jù)庫(kù)中,可以通過(guò)D-Recovey For MS SQL Server把正常的數(shù)據(jù)記錄提取出來(lái)。
總結(jié):
1、D-Recovey For MS SQL Server總體設(shè)計(jì)思想是直接讀取MDF文件中正常的數(shù)據(jù)記錄,并把這些數(shù)據(jù)保存成sql語(yǔ)句或者直接導(dǎo)入一個(gè)新的數(shù)據(jù)庫(kù)中,它不是設(shè)計(jì)成直接修復(fù)原始MDF文件使MDF文件能正常附加到數(shù)據(jù)庫(kù)中。當(dāng)數(shù)據(jù)庫(kù)管理員使用任何方法都不能把數(shù)據(jù)庫(kù)修復(fù)使它正常附加的情況下,D-Recovey For MS SQL Server就顯得格外有用。
2、數(shù)據(jù)能夠成功恢復(fù)的基礎(chǔ)是MDF文件關(guān)鍵系統(tǒng)表沒(méi)有被破壞,數(shù)據(jù)記錄內(nèi)容確實(shí)存在于MDF文件之中,如果數(shù)據(jù)記錄內(nèi)容被破壞被覆蓋,數(shù)據(jù)恢復(fù)將不能正確恢復(fù)原來(lái)的信息。
轉(zhuǎn)載地址:http://www.d-recovery.org
【編輯推薦】