сімейство носіїв на пристрої неправильно сформовано. SQL Server не може обробити цю медіасемейство


31

Я намагаюся відновити .BAK на SQL сервері, але отримую таку помилку:

Msg 3241, рівень 16, стан 7, рядок 1 Сімейство носіїв на пристрої "c: \ glyn \ JA.bak" неправильно сформовано. SQL Server не може обробити цю медіасемейство. Повідомлення 3013, рівень 16, стан 1, рядок 1 ПОНЯТТЯ ДАТАБАЗА закінчується аномально.

Я спробував відновити за допомогою 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 Management 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.