Восстановить базу данных SQL Server 2008 до SQL Server 2000 - PullRequest
5 голосов
/ 16 ноября 2009

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

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

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

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

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

Ответы [ 8 ]

10 голосов
/ 16 ноября 2009

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

4 голосов
/ 14 августа 2013

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

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

Создание сценариев в SSMS

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

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

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

  • Идея состоит в использовании сторонних инструментов сравнения баз данных, таких как ApexSQL Diff или Data Diff
  • Хорошая сторона в том, что они позаботятся о выполнении скрипта и различиях между версиями
  • Не очень хорошо то, что вам придется платить за них после окончания пробного периода
  • Я успешно использовал эти два инструмента, но вы не ошибетесь с любым другим инструментом на рынке. Здесь - список других инструментов в этой категории.
1 голос
/ 11 ноября 2011

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

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

1 голос
/ 17 ноября 2009

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

1 голос
/ 17 ноября 2009

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

0 голосов
/ 15 апреля 2015

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

  1. резервное копирование и усечение таблиц в SQL 2000.
  2. создать сервер LINKED в SQL 2008, указывая на SQL 2000
  3. запустить запрос на выборку для системных объектов, чтобы сгенерировать скрипт запроса для insert into LINKED SERVER.table select * from table
  4. выполнить скрипт запроса.
0 голосов
/ 17 ноября 2009

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

0 голосов
/ 16 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...