web-dev-qa-db-ja.com

デバイスのメディアファミリの形式が正しくありません。 SQL Serverはこのメディアファミリを処理できません

SQLサーバーで.BAKを復元しようとしていますが、次のエラーが発生します。

メッセージ3241、レベル16、状態7、行1デバイス 'c:\ glyn\JA.bak'のメディアファミリーの形式が正しくありません。 SQL Serverはこのメディアファミリを処理できません。メッセージ3013、レベル16、状態1、行1 RESTORE DATABASEが異常終了しています。

2012、2008、2005を使用して復元を試みましたが、何も機能しません。次のクエリとTasks >> Back upしかし、何も機能しません。これが私のSQLです。

RESTORE DATABASE JA FROM DISK='c:\glyn\JA.bak'

誰か提案はありますか?私はベイクが壊れている可能性があることを読みました、それはプロジェクトに取り組んでいるDVD上の別の開発者によって私に送られました。

31
Funky

新しいデータベースを古いSQLバージョンに復元する場合は、常に古いSQLバージョンでデータベースを手動で作成し、タスクを利用して、スクリプトを生成し、データを含めることができます。

ファイルに保存->詳細->スクリプトに書き込むデータのタイプ->スキーマとデータ

また、Script for Server Versionも確認してください。

これは、新しいSQL Serverから古いバージョンに移行する場合にサポートされる唯一のオプションとなる場合があります。

関連: SQL Server 2012バックアップをSQL Server 2008データベースに復元しますか?

12
A. Thomas

これが見つかりました that は、バックアップファイルが破損していることを示しています。バイナリではなくテキストモードでFTPによって転送される可能性があります。

そして このブログ は、他の誰かが同じ問題をどのように修正したかをリストしています。

7
Kenneth Fisher

私は同じ問題を抱えていました、私のスクリプトは間違ったFILEタイプを指定していました、.bakと指定しましたFILE = 2 これは .trn

USE [master]
RESTORE DATABASE [MyNewDB] FROM
DISK = N'D:\MyOldDB.bak'
WITH
    FILE = 1, -- 1 = .bak, 2 = .trn type backup
    MOVE N'MyOldDB' TO N'd:\data\MyOldDB.mdf',
    MOVE N'MyOldDB_log' TO N'd:\data\MyOldDB_log.ldf',
    NOUNLOAD,
    STATS = 5    
GO

RESTOREコマンドがこれを自動検出するか、デフォルトを設定するかわかりません...

6
sonjz

移行元と移行先のSQL Serverで次のスクリプトを実行します。バージョンが一致するか、移行先のSQL Serverのバージョンが上位である必要があります。そうでない場合、.bakファイルを復元できません。

SELECT @@Version
6
Shadi Namrouti

唯一の理由は、以前のバージョンのバックアップを復元しようとしていることです。参照: http://www.sqlservercentral.com/Forums/Topic1675066-1550-1.aspx?Update=1

1
Saurabh Sinha