Microsoft Sql Serverでバックアップを作成すると、結果のファイルは Microsoft Tape Format になります。 SQL Serverのバージョンが異なると、このフォーマットのバージョンも使用されるようです。
特定の形式のバージョンの特定のファイルを復元するには、どのバージョンのSQLサーバーが必要ですか?
バックアップを作成するときにSQLサーバーが使用するバージョンに何らかの影響を与えることができますか?
背景:現在、不明なバージョンのSQLサーバー(おそらく2012年)で作成されたデータベースバックアップを復元しようとしています。SQLServer Express 2008 R2を使用しています。コマンド実行時
RESTORE VERIFYONLY FROM DISK='C:\myfile.bak'
エラーが出る
The media family on device 'C:\myfile.bak' was created
using Microsoft Tape Format version 1.8.
SQL Server supports version 1.0.
これは単に、古いバージョンのSQLサーバーでデータベースを復元できない場合であり、アップグレード以外には何もする必要はありません。ただし、どのMSテープ形式のバージョンがどのSQLサーバーに対応するかについての情報は見つかりませんでした。エラーメッセージはあまりわかりません。
したがって、このようなエラーメッセージを理解するために、この形式に関する一般的な情報、特にテープ形式のバージョン番号とSQL Serverのバージョン番号の正確な対応に興味があります。
更新:
これは、SQL Serverのバージョンが間違っているだけの問題ではないようです。
SQL Server 2012 Expressでの復元は、同じエラーで失敗しました。
RESTORE HEADERONLY
結果のヘッダー
BackupName: *** INCOMPLETE ***
Position: 1
Every other column: NULL
現在、ファイルの別のコピーを取得中です。
Kinが正しく推論したように、問題は確かに破損したバックアップでした。ほとんどの場合、破損はFTP転送中に発生しました。
したがって、「デバイス 'C:\ myfile.bak'のメディアファミリはMicrosoft Tape Formatバージョン1.8を使用して作成されました。SQLServerはバージョン1.0をサポートしています。 "またはエラー"- 指定されたキャストは無効です。(SqlManagerUI) "SQL Management Studio Guiを使用してバックアップを復元する場合、バックアップファイルが破損している可能性があります。
私の場合、FTP転送の前にファイルを圧縮すると問題が解決しました。
thinkバックアップファイルには常にチェックサムが含まれ、ファイルが後で変更された場合、SQLサーバーはこの誤ったチェックサムを報告しますが、wrongになります。