クラウドベースのサービスにバックアップしていた人の問題を探しています。どうやら、顧客のサーバーは、クラウドベースのサービスのデータストアで何らかのメンテナンスを行っている間にクラッシュし、これによりデータストアが破損した状態になりました。同時に、クラッシュのために顧客のサーバーは復旧できませんでした。
クラウドベースのサービスの開発者は、データベースのバックアップに属するデータのチャンクを見つけてそれらをファイルに結合するスクリプトを作成する必要がありました。
これにより、データが含まれていることがわかるバックアップ(.bak)ファイルが生成されました(その上で「文字列」を実行して、ファイル名、テーブル名、データの行などと共にヘッダーを表示できます)。 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であるため、残念ながらバージョンの不一致はエラーの原因ではありません。
16進エディター(xvi32)で別のデータベースの有効なバックアップファイルと比較したところ、有効なバックアップファイルはバイト0の文字列 'tape'で始まっていましたが、破損したファイルには158バイトの識別可能な意味のない他のデータがありました。それ以前は。文字列 'tape'までの破損したバックアップから158バイトを削除しましたが、これにより少し遠くに行きました。これで「RESTORE FILELISTONLY」が機能しましたが、以前は同じエラーがスローされていました。
「RESTORE HEADERONLY」は、エラー3013をスローする代わりに「不完全」を表示するようになりました。プロセスモニターでトレースすると、オフセット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)他にここで試すことができるものはありますか?
2)請求可能なベースで支援できる誰かを知っている人はいますか?たとえば、MSサポートまたは一部の元MSコンサルタントは、このバックアップファイルを使用可能な形式にハッキングできますか?
ありがとう!
私はこの種の仕事をするコンサルタントを知っていますが、それは決して安いものではありません。それは気弱な人のためではなく、最後の手段としてそのルートに行きたいだけです。