Семейство медиафайлов на устройстве сформировано неправильно. SQL Server не может обработать это семейство носителей


31

Я пытаюсь восстановить .BAK на сервере SQL, но получаю следующую ошибку:

Сообщение 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, который работает над проектом.


Ответы:


12

Если вы пытаетесь восстановить более новую базу данных в более старую версию SQL, вы всегда можете просто вручную создать базу данных в более старой версии SQL и использовать задачу - генерировать сценарии и включать данные.

Сохранить в файл -> Дополнительно -> Типы данных в сценарии -> Схема и данные .

Также убедитесь, что скрипт для версии сервера .

Это может быть единственная поддерживаемая опция, если вы пытаетесь перейти с более новой версии SQL Server на старую версию.

Связанный: Восстановить резервную копию SQL Server 2012 в базу данных SQL Server 2008?


Похоже, взломать, но я думаю, что это работало вокруг этой проблемы в моем случае.
jpierson

7

Я обнаружил, что это говорит о том, что ваш файл резервной копии поврежден. Возможно передача по FTP в текстовом режиме, а не в двоичном формате.

И этот блог, в котором перечислено, как кто-то еще исправил эту проблему.


8
«перечисляет, как кто-то еще исправил эту проблему», как правило, на сайтах сети SE вы должны публиковать соответствующие фрагменты, например сообщения в блоге; это предотвращает затухание ссылки
jcollum

6

У меня была та же проблема, мой сценарий указывал неправильный тип ФАЙЛА, у меня было, .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 автоматически определяет или устанавливает значение по умолчанию для этого ...


1
Ошибка оборачивается этим, проблема в том, что когда вы используете графический интерфейс для восстановления баз данных, SQL Managment Studio не предоставляет вам подробную информацию. Если вы попытаетесь восстановить с помощью t-sql-скрипта, sql-сервер сообщит вам об использовании опции MOVE.
dlopezgonzalez

5

Запустите следующий сценарий на исходном и целевом серверах SQL, версии должны совпадать, или в месте назначения должна быть установлена ​​более поздняя версия SQL Server, иначе вы не сможете восстановить файл .bak:

SELECT @@Version

1
Пункт о версиях был повторен в других ответах.
Андрей М

1
@AndriyM ты прав, но практических действий не хватало. Мы не говорим об истории или географии, некоторые команды или код должен быть упомянут.
Шади Намрути


-4

удалите поврежденный файл и перезапустите резервную копию


4
Привет, добро пожаловать на сайт. Нам нравится немного подробнее о том, как и почему это будет работать.
Том V - Команда Моника
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.