У меня есть база данных в dev (SQL Server 2005 на Windows Server 2008), которую мне нужно перейти на prod (SQL Server 2000 на Windows Server 2003). Мой процесс выглядит следующим образом:
- Войдите в dev, откройте SQL Server Management Studio
- Щелкните правой кнопкой мыши на базе данных | Задачи | Резервный. Сохраните все параметры по умолчанию (полное резервное копирование и т. Д.)
- Переместите файл .bak локально в prod (без сетевого диска), войдите в prod, откройте SQL Server Enterprise Manager.
- Щелкните правой кнопкой мыши узел Базы данных | Все задачи | Восстановить базу данных.
- Измените Восстановить как базу данных, чтобы отобразить то же имя базы данных.
- Нажмите переключатель «С устройства». Нажмите «Выбрать устройства»
- Нажмите Восстановить из: Добавить ..., найдите файл .bak (маленький - всего 6 МБ)
Теперь я готов восстановить базу данных, поэтому я нажимаю ОК и получаю следующую ошибку:
«Семейство носителей на устройстве« E: ... bak »сформировано неправильно. SQL Server не может обработать это семейство носителей. RESTORE DATABASE прерывается ненормально».
Эта ошибка немедленная.
Я пробовал несколько разных вариантов этого - восстановление машины db to dev с другим именем базы данных и именами файлов журналов (откуда она возникла), создание пустой базы данных с тем же физическим путем к файлам и попытка ее восстановления, сделать несколько разных .bak файлов и убедиться, что они проверены перед загрузкой в prod. Я точно знаю, что каталог для файлов .mdf и .ldf существует на prod, хотя сами файлы не существуют. Если, прежде чем я нажму OK для восстановления, перейдите на вкладку параметров вместо этого я получаю следующую ошибку:
Ошибка 3241: Семейство носителей на устройстве «E: ... bak» сформировано неправильно. SQL Server не может обработать это семейство носителей. ВОССТАНОВЛЕНИЕ ФИЛИСТА завершается ненормально.
У кого-нибудь есть яркие идеи?
Ответы:
Заголовки резервных копий в MSSQL2008 отличаются от заголовков в MSSQL2005, что, вероятно, является источником вашей проблемы. Попробуйте экспортировать БД вместо парадигмы резервного копирования и восстановления или настройте MSSQL2008 на своем сервере DEV.
источник
Как говорит Майк Диммик - SQL 2000 не распознает резервные копии SQL 2005 (как Word 2000 не распознает файлы DOCX 2007 года). Поэтому вам придется переносить данные в формате с более низким общим знаменателем, таком как сценарии SQL. Попробуйте Мастер публикации баз данных, который является частью SQL Server Hosting Toolkit, который генерирует один файл 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. Genius.
И я полностью согласен с [Yini] - честно говоря, вы не можете восстановить резервную копию SQL Server 2008 в экземпляр 2005 года, но Microsoft может, по крайней мере, дать нам достойное сообщение об ошибке.
«Семейство носителей на устройстве« D: \ DatabaseBackup_21_02_2011.bak »сформировано неправильно. SQL Server не может обработать это семейство носителей».
Моя резервная копия не была сформирована неправильно. Его просто невозможно восстановить в экземпляр SQL Server 2005 , даже когда я использую SQL Server 2008 с пакетом обновления 1 (SP1).
Неужели так сложно поместить это в сообщение об ошибке ............?
источник
Несколько мыслей:
Приблизительно какой размер базы данных вы восстанавливаете?
Единственная статья поддержки по этой ошибке предназначена для SQL 2000 и рассказывает о больших файлах журналов. Несмотря на то, что вы не используете SQL 2000, вначале можно попытаться уменьшить размер журналов, если они особенно велики.
Можете ли вы восстановить базу данных на вашем Dev-сервере (под другим именем db, в другие файлы)? Это докажет, подходит ли сам файл для SQL 2005.
Вы можете восстановить любые другие базы данных с этого сервера разработки на Prod?
источник
Привет всем, поскольку Майк предлагает мне порекомендовать мастера публикации баз данных, он прекрасно справляется со своей задачей.
Вот обходной путь, который я изначально использовал, который я бы не стал полностью предлагать - кажется, немного гетто .
1) Создайте db on prod, создайте пользователя db с соответствующими правами, откройте порт на брандмауэре, который разрешает удаленный доступ.
2) Из dev в SQL Server Management Studio щелкните правой кнопкой мыши db -> tasks -> export data. При выборе пункта назначения обязательно укажите порт xxx.xxx.xxx.xxx, 1764.
3) Выберите все таблицы для переноса, нажмите следующие 100 раз, и все готово.
ВНИМАНИЕ: Это не копирует хранимые процедуры.
ВНИМАНИЕ: Это не копирует Identities для столбцов int
ОБНОВЛЕНИЕ: похоже, что вы не можете перейти с 2005 на 2000 год. Я нашел следующий текст ссылки на пост - похоже, вы можете использовать мои методы выше, но вы также хотите написать сценарий для всех объектов и затем запустить его на 2000.
источник