Відновлення резервної копії SQL Server призводить до помилки


15

У мене в базі даних dev (SQL Server 2005 на Windows Server 2008), яку мені потрібно перейти до prod (SQL Server 2000 на Windows Server 2003). Мій процес такий:

  1. Увійдіть до програми, відкрийте SQL Server Management Studio
  2. Клацніть правою кнопкою миші на базі даних | Завдання | Резервне копіювання. Зберігайте всі параметри за замовчуванням (повна резервна копія тощо)
  3. Перемістіть .bak файл локально до prod (немає мережевого диска), увійдіть до prod, відкрийте SQL Server Enterprise Manager.
  4. Клацніть правою кнопкою миші вузол Бази даних | Усі завдання | Відновлення бази даних.
  5. Змініть Відновити як базу даних, щоб відобразити те саме ім’я бази даних.
  6. Клацніть перемикач "Від пристрою". Натисніть "Вибрати пристрої"
  7. Клацніть Відновити з: Додати ..., перегляньте файл .bak (маленький - лише 6 Мб)

Тепер я готовий відновити базу даних, тому натискаю ОК і отримую таку помилку:

"Сімейство медіа-файлів на пристрої" E: ... bak "неправильно сформовано. SQL Server не може обробити цю медіа-сім'ю. RESTORE DATABASE закінчується аномально."

Ця помилка негайна.

Я спробував декілька різних варіацій цього - відновлення db до dev-машини з іншим іменем db та іменами файлів журналу (звідки вони виникли), створення порожньої бази даних з тим самим фізичним шляхом до файлів, і намагаюся відновити до цього, створення декількох різних .bak-файлів і переконайтесь, що вони перевірені, перш ніж завантажувати їх у додаток. Я фактично знаю, що каталог для .mdf та .ldf файлів існує у prod, хоча самі файли не існують. Якщо перед тим, як натиснути «ОК», щоб відновити, перейдіть на вкладку «Параметри», а я отримую таку помилку:

Помилка 3241: сімейство носіїв на пристрої "E: ... bak" неправильно сформовано. SQL Server не може обробити цю медіасемейство. RESTORE FILELIST закінчується аномально.

У когось є якісь яскраві ідеї?


Я погоджуюсь, що щойно витратив на це день і витратив свій час, здається, що це питання про сумісність, 2k8 R2 - 2k5 в моєму випадку.

Відповіді:


7

Заголовки резервного копіювання в MSSQL2008 відрізняються від таких у MSSQL2005, що, ймовірно, є джерелом вашої проблеми. Спробуйте експортувати БД замість парадигми відновлення резервного копіювання або встановити MSSQL2008 на свій сервер DEV.


4

Як каже Майк Діммік - SQL 2000 не розпізнає резервні копії SQL 2005 (як Word 2000 не розпізнає файли DOCX 2007). Тому вам доведеться перенести свої дані у нижній загальний формат знаменника, такий як сценарії SQL. Спробуйте майстер публікації баз даних, який є частиною інструментарію хостингу SQL Server, який генерує єдиний файл SQL як для схеми, так і для даних.


1
Важливо перевірити, чи встановлений у вас SqlExpress (можливо, він встановлений, не розуміючи, що він у вас є). Дуже легко увійти в SqlExpress помилково, а потім панікувати, оскільки це не дозволить відновити в ньому базу даних 2008 року. Це, мабуть, дуже поширена причина отримання цієї помилки.
Саймон

2

Ви можете переміщати резервні копії в сімействі SQL Server, тобто 2000 до 2005 або 2008, але не назад: ви не можете відновити резервну копію SQL Server 2005 на SQL Server 2000.


1

Можливо, це проблема з дозволами, що запобігає створенню файлу при спробі відновлення. Спробуйте створити нову базу даних для цілі з тим самим ім'ям, яке ви хочете, а потім відновіть її над її вершиною.

Крім того, якщо ви намагаєтесь відновити резервну копію з зовнішнього жорсткого диска або мережевого спільного доступу, спробуйте скопіювати файл резервної копії на локальну машину, перш ніж спробувати відновити.


1

За замовчуванням є два дослідники об'єктів від SQL Server 2005. Я думаю, ви намагаєтеся об’єкт сервер / sqlexpress. Спробуйте відновити інший.


1

(З полегшенням зітхнув.) Ааааа, в цьому проблема.

У мене на віддаленому ПК працює SQL Server 2008 SP1. Я створив резервну копію бази даних, але не зміг відновити локальну копію SQL Server 2008 з файлу .bak.

Як [Yini] каже, це було зведено до моєї копії SQL Server 2008, яка відкрила мій екземпляр SQL Server 2005 на моєму локальному ПК, а не мою інстанцію SQL Server 2008. Геніальність.

І я повністю згоден з [Yini] - досить справедливо, ви не можете відновити резервну копію SQL Server 2008 в екземплярі 2005 року, але Microsoft, принаймні, може дати нам гідне повідомлення про помилку.

"Медіа-сім'я на пристрої" D: \ DatabaseBackup_21_02_2011.bak "неправильно сформована. SQL Server не може обробити цю медіа-сім'ю."

Моя резервна копія не була сформована неправильно. Він просто не може бути відновлений у екземплярі SQL Server 2005 , навіть коли я запускаю SQL Server 2008 SP1.

Невже це важко помістити це у повідомлення про помилку ............?


0

Кілька думок:

  • Приблизно, який розмір має база даних, яку ви відновлюєте?
    Єдина стаття підтримки щодо цієї помилки - це SQL 2000 і розповідає про великі файли журналів. Хоча ви не на SQL 2000, це може допомогти спершу зменшити розмір журналів, якщо вони особливо великі.

  • Чи можете ви відновити базу даних на сервері Dev (як інше ім'я db, для різних файлів)? Це доводить, чи добре файл, що стосується SQL 2005.

  • Чи можете ви відновити будь-які інші бази даних з цього сервера Dev в Prod?


0

Привіт усім, як Майк пропонує, я б порекомендував майстра публікації баз даних, це прекрасна робота.

Ось таке вирішення, яке я спочатку використовував , я не повністю пропонував би - це здається трохи гетто .


1) Створіть db on prod, створіть користувача db з належними правами, відкрийте порт на брандмауері, що дозволяє віддалений доступ.
2) Від розробника в студії управління SQL Server натисніть правою кнопкою миші db -> задач -> експорт даних. Вибираючи пункт призначення, обов'язково вкажіть порт xxx.xxx.xxx.xxx, 1764.
3) Виберіть усі таблиці для передачі, натисніть наступні 100 разів, і ви закінчите.

ПОПЕРЕДЖЕННЯ. Це не копіюється через збережені процедури.
ПОПЕРЕДЖЕННЯ. Це не копіює ідентичності для int стовпців

ОНОВЛЕННЯ: Схоже, ви не можете перейти з 2005 по 2000 рік. Я знайшов наступний текст посилання на повідомлення - це здається, що ви можете скористатися моїми методами вище, але ви також хочете зафіксувати всі об'єкти, а потім запустити його на 2000 рік.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.