
我們的數(shù)據(jù)恢復(fù)客戶經(jīng)常要求我們定位他們的數(shù)據(jù)庫,而Microsoft SQL Server數(shù)據(jù)庫是最常請求的文件之一。在許多情況下,SQL Server數(shù)據(jù)庫是驅(qū)動器或服務(wù)器上唯一重要的事情 - 客戶端不需要任何其他東西,并且他們要求我們的工程師做任何事情,盡一切可能使這些關(guān)鍵文件重新啟動并運行。因此,我們開發(fā)了一些用于SQL Server恢復(fù)的專用方法,包括關(guān)鍵軟件工具,我們一直在尋找改進流程的方法。
規(guī)劃Microsoft SQL Server數(shù)據(jù)恢復(fù)時需要考慮幾個因素。SQL Server可能對任何問題非常敏感,例如壞扇區(qū),錯誤對齊或過時數(shù)據(jù)。數(shù)據(jù)庫可能包含大文件,這會增加與恢復(fù)相關(guān)的風(fēng)險 - 恢復(fù)數(shù)據(jù)中的任何小問題都將影響整個數(shù)據(jù)庫。即使有100%的干凈恢復(fù),如果數(shù)據(jù)庫沒有正確關(guān)閉,SQL Server可能無法解釋恢復(fù)的數(shù)據(jù)(此問題已在新軟件的最新版本中稍微減少)。
無法附加的數(shù)據(jù)庫 - 或者在訪問數(shù)據(jù)時報告大量錯誤的數(shù)據(jù)庫 - 對我們的客戶來說基本上是無用的。我們的無數(shù)據(jù),無收費政策涵蓋了這種情況,因此我們采取必要的步驟來提供我們的客戶可以重新連接并干凈利用的恢復(fù)的數(shù)據(jù)庫文件。目標是讓他們輕松地將數(shù)據(jù)重新集成到他們的系統(tǒng)中。但是,SQL Server與各種前端應(yīng)用程序一起運行,因此我們無法提供完全重新集成的支持。

在我們的實驗室中,由于軟件的廣泛普及,我們使用了數(shù)百種SQL數(shù)據(jù)庫配置。我們經(jīng)常發(fā)現(xiàn)我們的客戶在RAID系統(tǒng)上運行SQL Server,但在標準的消費者計算機上找到該軟件的情況并不少見。我們實驗室處理的SQL服務(wù)器的常見版本包括:
在下面的段落中,我將進一步深入了解更困難案例的流程,但首先我將嘗試提供與SQL Server相關(guān)的實際數(shù)據(jù)庫文件的一些背景信息。
與SQL Server關(guān)聯(lián)的關(guān)鍵文件類型是MDF和LDF文件(很少是NDF)。兩者都是運行數(shù)據(jù)庫所必需的。MDF文件是主數(shù)據(jù)庫文件,LDF是日志文件。LDF記錄過去發(fā)生的事務(wù),這些事務(wù)允許回滾操作或從上次備份后的問題中恢復(fù),這有助于保證數(shù)據(jù)的一致性。通常MDF文件是較大的文件,但我們已經(jīng)看到有時LDF較大(這取決于配置和使用情況)。數(shù)據(jù)庫備份文件通常是BAK擴展名。
在大多數(shù)情況下,恢復(fù)的SQL Server數(shù)據(jù)庫文件測試完全正常,但如果恢復(fù)特別困難或者對解決方案造成重大損害,我們通常會看到一些問題出現(xiàn)。這些可以以不同方式表現(xiàn)出來。查詢數(shù)據(jù)時,數(shù)據(jù)庫可能無法附加或顯示錯誤。在某些情況下,我們只是在原始文件中找到不良數(shù)據(jù),此時我們需要更深入地了解哪些是出錯的。
根據(jù)具體情況,我們可能需要返回到物理數(shù)據(jù)恢復(fù)程序,以嘗試更好地克隆原始媒體。如果SQL Server數(shù)據(jù)庫文件位于RAID上,我們必須調(diào)整RAID恢復(fù)以從所有驅(qū)動器成員中獲得最干凈的提取。這就是我們的內(nèi)部軟件工具發(fā)揮作用的地方,因為這些工具允許我們在SQL Server MDF和LDF文件中填寫正確數(shù)據(jù)的空白,無論何時可以在別處找到(不是在原始恢復(fù)文件中) 。
在RAID的情況下,其中多個驅(qū)動器在不同點處發(fā)生故障,這可能允許我們使用通常不期望的“陳舊”驅(qū)動器的小部分來實現(xiàn)此目的。在其他情況下,由于我們經(jīng)常能夠在數(shù)據(jù)中找到不同版本的類似數(shù)據(jù)庫文件,我們可以將我們的自動化工具指向多個版本,并通過用以下方法替換壞扇區(qū),將最佳結(jié)果與最新數(shù)據(jù)拼湊在一起。從另一個文件中丟失數(shù)據(jù)。我們將盡一切努力獲得最佳結(jié)果,有時這個過程可能需要數(shù)天(我們通過任何必要的方式縮短周轉(zhuǎn)時間,但數(shù)據(jù)恢復(fù)的質(zhì)量始終是首要任務(wù)。)
對于處理損壞的SQL Server數(shù)據(jù)庫的IT專業(yè)人員,有許多商業(yè)工具被宣傳為專業(yè)SQL Server數(shù)據(jù)庫恢復(fù)服務(wù)的有效替代品。但是,我建議不要使用這些類型的實用程序,而是基于相當?shù)湫偷幕謴?fù)中經(jīng)常出現(xiàn)的問題。基本軟件不足以獲得干凈的恢復(fù),所有這些工具都需要訪問數(shù)據(jù)才能工作。這通常是一種安全風(fēng)險。
除此之外,這些工具很少會返回正確附加并提供可用數(shù)據(jù)的數(shù)據(jù)庫。可以轉(zhuǎn)儲存儲過程和視圖(使用數(shù)據(jù)庫的軟件系統(tǒng)通常需要這些過程和視圖)。表行通常會以粗略的方式進行大幅削減,因為實用程序會執(zhí)行創(chuàng)建正常運行的數(shù)據(jù)庫所需的操作,而無需真正查看數(shù)據(jù)。根本沒有邏輯決策能力,這將導(dǎo)致可用性問題。
當然,一些SQL Server數(shù)據(jù)庫修復(fù)工具將作為最后的手段,但它們最適合知識淵博的專業(yè)人士使用。功能強大的數(shù)據(jù)恢復(fù)服務(wù)將為您提供更好,更安全,更安全的結(jié)果。如果您正在考慮使用SQL Server數(shù)據(jù)進行數(shù)據(jù)恢復(fù)服務(wù).