Назад | Перейти на главную страницу

SQL Server восстановление резервной копии приводит к ошибке

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

  1. Войдите в dev, откройте 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 и убедиться, что они проверены, прежде чем загружать их в prod. Я точно знаю, что каталог для файлов .mdf и .ldf существует на prod, хотя сами файлы не существуют. Если до того, как я нажму OK для восстановления, я перейду на вкладку параметров, я получу следующую ошибку:

Ошибка 3241: семейство носителей на устройстве «E: ... bak» сформировано неправильно. SQL Server не может обрабатывать это семейство носителей. RESTORE FILELIST аварийно завершает работу.

У кого-нибудь есть яркие идеи?

Заголовки резервных копий в MSSQL2008 отличаются от заголовков в MSSQL2005, что, вероятно, является источником вашей проблемы. Попробуйте экспортировать БД вместо парадигмы резервного копирования и восстановления или настройте MSSQL2008 на своем сервере DEV.

Как говорит Майк Диммик, SQL 2000 не распознает резервные копии SQL 2005 (как Word 2000 не распознает файлы DOCX 2007 года). Поэтому вам придется перенести данные в формат с более низким общим знаменателем, например в сценарии SQL. Попробуйте Мастер публикации базы данных который является частью Набор инструментов для хостинга SQL Server который генерирует один файл SQL как для схемы, так и для данных.

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

Возможно, проблема с разрешениями не позволяет создать файл при попытке восстановления. Попробуйте создать новую базу данных на целевом сервере с тем же именем, которое вы хотите, а затем восстановить поверх нее.

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

По умолчанию из SQL Server 2005 есть два обозревателя объектов. Я думаю, вы пытаетесь использовать объект server / sqlexpress. Попробуй восстановить на другой.

(Вздох с облегчением.) это эта проблема.

У меня 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.

Неужели так сложно поместить это в сообщение об ошибке ............?

Несколько мыслей:

  • Примерно какого размера база данных, которую вы восстанавливаете?
    Единственный статья поддержки по этой ошибке предназначен для SQL 2000 и говорит о больших файлах журнала. Пока вы не используете SQL 2000, может помочь сначала уменьшить размер журналов, если они особенно велики.

  • Можете ли вы восстановить базу данных на своем Dev-сервере (как другое имя базы данных, в разные файлы)? Это докажет, в порядке ли сам файл с точки зрения SQL 2005.

  • Сможете ли вы восстановить любые другие базы данных с этого сервера Dev на Prod?

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

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


1) Создайте базу данных на продукте, создайте пользователя базы данных с соответствующими правами, откройте порт на вашем брандмауэре, который позволяет удаленный доступ
2) Из разработчика в SQL Server Management Studio щелкните правой кнопкой мыши db -> tasks -> export data. При выборе места назначения обязательно укажите порт xxx.xxx.xxx.xxx, 1764.
3) Выберите все таблицы для переноса, нажмите «Далее» 100 раз, и все готово.

ВНИМАНИЕ: это не копирует хранимые процедуры.
ВНИМАНИЕ: это не копирует идентификаторы для столбцов типа int

ОБНОВЛЕНИЕ: Похоже, вы не можете перейти с 2005 на 2000. Я нашел следующий пост текст ссылки - похоже, что вы можете использовать мои методы выше, но вы также хотите создать сценарий для всех объектов, а затем запустить его на 2000.