Восстановить базу данных SQL Server 2008 до SQL Server 2000

Мне нужно переместить всю базу данных с машины SQL Server 2008 на машину SQL Server 2000.

Я создал резервную копию с помощью Management Studio 2008, скопировал ее на жесткий диск коробки 2000, а в Management Studio 2008 выбрал «Восстановить базу данных в поле 2000».

Я получаю сообщение об ошибке: «Семейство носителей на устройстве ... неправильно сформировано. SQL Server не может восстановить это семейство носителей».

Если я использую Enterprise Manager 2000, я получаю ту же ошибку.

Есть ли способ переместить всю базу данных с нового SQL-сервера на более старый?


person spaetzel    schedule 16.11.2009    source источник


Ответы (8)


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

person DForck42    schedule 16.11.2009
comment
Я только что закончил делать это сам. Единственный способ, который я нашел для этого, - это написать сценарий всей базы данных (включая данные) и запустить сценарий на целевой машине. Это неприятно, потому что БД 2008 года может создать сценарий, который не будет работать на 2000 (ну, мой сделал), поэтому вам нужно будет отредактировать сгенерированный сценарий перед запуском в 2000 году. Прежде чем начать, запаситесь тайленолом. Удачи. - person BoltBait; 17.11.2009
comment
Да, это единственный способ сделать это. SQL Server никогда не был обратно совместим, например у вас никогда не было возможности восстановить более новую версию на более старый сервер. Я не думаю, что это изменится - person marc_s; 17.11.2009

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

Вам необходимо сгенерировать сценарии для структуры и данных, а затем выполнить их на SQL 2000 (как уже было сказано), но есть несколько вещей, которые следует принять во внимание.

Создавать скрипты в SSMS

  • Обязательно установите флажок для сценариев данных для SQL 2000, чтобы избежать проблем при попытке создать что-то вроде столбца географического типа в SQL 2000.
  • Обязательно проверьте порядок выполнения скриптов, чтобы избежать ошибок, связанных с зависимостями.

Это отличный вариант для баз данных малого и среднего размера и требует определенных знаний о SQL Server (зависимости, различия между версиями и т. Д.)

Сторонние инструменты

  • Идея состоит в том, чтобы использовать сторонние инструменты сравнения баз данных, такие как ApexSQL Diff или Data Diff
  • Хорошая сторона в том, что они позаботятся о выполнении скрипта и различиях между версиями.
  • Не очень хорошо то, что вам придется платить за них после окончания пробного периода.
  • Я успешно использовал эти два инструмента, но вы не ошибетесь с любым другим инструментом на рынке. Вот список других инструментов в этой категории.
person Ryszard Wojchiechowsky    schedule 14.08.2013

вы не можете перемещать резервные копии из более новой версии в более старую, в этом случае вы можете создать сценарий для своей базы данных, выполнить его в поле 2000, затем вы можете использовать стандартную передачу данных для передачи любых данных, которые вы хотите

person BlackTigerX    schedule 16.11.2009

Если у вас есть сетевое соединение между машинами, использующими SSIS. Гораздо проще и меньше возиться.

person Community    schedule 16.11.2009

Вы можете использовать Генератор сценариев для своей базы данных, а затем выбрать в форме свойств: Общие-> Сценарий для версии сервера: SQL Server 2000.

Генератор скриптов покажет вам то, что несовместимо с версией вашего сервера.

person Zakaria    schedule 11.11.2011

Я слышал, что это можно сделать, только сгенерировав дамп оператора SQL из инструмента администратора БД и повторно запустив эти запросы в целевой более старой базе данных.

person Gabriel Magana    schedule 16.11.2009
comment
Конечно, вам придется вручную манипулировать ими, поскольку инструмент-скрипт вставляет вещи, которые 2000 не распознает. - person HLGEM; 17.11.2009

Вы можете сгенерировать сценарий, который воссоздает все объекты и передаст все данные ... пока все в базе данных допустимо в SQL 2000. Таким образом, без ROW_NUMBER (), без PARTITION, без CTE, без datetime2, иерархии или нескольких другие типы полей, без EXECUTE AS и многое другое. В принципе, есть большая вероятность, что это невозможно, если ваш db не является довольно простым.

person MartW    schedule 16.11.2009

У нас похожая ситуация. Очень низкотехнологичное, но удобное решение:

  1. резервное копирование и усечение таблиц в SQL 2000.
  2. создать СВЯЗАННЫЙ сервер в SQL 2008, указывающий на SQL 2000
  3. выполнить запрос выбора в sysobjects, чтобы сгенерировать сценарий запроса для insert into LINKED SERVER.table select * from table
  4. выполнить скрипт запроса.
person user4791628    schedule 15.04.2015