Sql-Server

修復損壞的 SQL Server 數據庫備份?

  • February 9, 2013

我正在為正在備份到基於雲的服務的人尋找問題。顯然,客戶的伺服器在對基於雲的服務的數據儲存進行一些維護時崩潰了,這導致數據儲存處於損壞狀態。同時,客戶的伺服器因崩潰而無法恢復。

基於雲的服務的開發人員必須編寫一個腳本來查找屬於數據庫備份的數據塊並將它們拼接到一個文件中。

這導致了一個備份 (.bak) 文件,我可以告訴它其中包含數據(我可以在其上執行“字元串”並查看標題,以及文件名、表名、數據行等),但不會t 由 SQL Server 處理。我得到:

restore headeronly from disk = 'c:\restore.bak'

Msg 3241, Level 16, State 0, Line 1
The media family on device 'c:\restore.bak' is incorrectly formed. SQL Server cannot   
process this media family.
Msg 3013, Level 16, State 1, Line 1
RESTORE HEADERONLY is terminating abnormally.

死亡機器上的源實例和我正在測試恢復的機器上的源實例都是 SQL Server 2008 R2,所以不幸的是版本不匹配不是錯誤的根源。

我在十六進制編輯器(xvi32)中與另一個數據庫的有效備份文件進行了比較,並註意到有效的備份文件以字節 0 處的字元串“tape”開頭,但損壞的文件有一些其他數據,對於 158 字節沒有明顯意義在那之前。我從損壞的備份中刪除了 158 個字節,直到字元串“tape”,這讓我更進一步。現在’RESTORE FILELISTONLY’工作了,而之前它拋出了與上面相同的錯誤。

‘RESTORE HEADERONLY’ 現在顯示 ‘incomplete’ 而不是拋出錯誤 3013。如果我在 Process Monitor 中跟踪它,我可以看到它嘗試在偏移量 7168 處讀取 512 個字節,然後嘗試在超過結束的偏移量處讀取另外 512 個字節文件。該文件幾乎可以肯定是不完整的;根據基於雲的服務中的報告工具​​,它最初是 95.8 MB,但在我的文件系統上只有 92.95 MB。

我嘗試強制恢復部分修復的 (?) 文件:

restore database corrupt from disk = 'c:\restore_partiallyrepaired.bak' with continue_after_error, move 'corrupted' to 'c:\corrupt.mdf', move 'corrupted_log' to 'c:\corrupt.ldf'

這使 SQL Server 崩潰,但提供了一個線索:

Date        3/3/2012 9:52:06 AM
Log     SQL Server (Archive #1 - 3/3/2012 9:52:00 AM)
Source      spid55
Message
The backup data at the end of "c:\restore_partiallyrepaired.bak" is incorrectly formatted.    
Backup sets on the media might be damaged and unusable. To determine the backup sets on 
the media, use RESTORE HEADERONLY. To determine the usability of the backup sets, run 
RESTORE VERIFYONLY. If all of the backup sets are incomplete, reformat the media using 
BACKUP WITH FORMAT, which destroys all the backup sets.




RESTORE detected an error on page (48:538976288) in database "corrupt" as read from the   
backup set.

Hit Fatal Error: Server is terminating

我嘗試了各種方法來“破解”恢復生成的 42.5 MB MDF,但使用 DBCC CHECKDB 無法修復。

在這一點上,我將把我的發現連同我的發現一起發回給基於雲的服務的支持團隊,看看這是否為他們提供了有關如何提取非損壞文件的任何線索。

我想我的問題是:

1)還有什麼我可以在這裡嘗試的嗎?

  1. 你認識的有沒有人可以在收費的基礎上提供幫助?例如,MS 支持人員或某些前 MS 顧問能否將此備份文件破解為可用格式?

謝謝!

我確實認識一位從事這種工作的顧問,但它遠不便宜——想想五位數的中位數開始這個項目,預付。這不適合膽小的人,你只想走那條路作為最後的手段。

引用自:https://dba.stackexchange.com/questions/14329