Первая часть здесь - http://community.terrasoft.ua/blogs/4354
Продолжу описывать общую методологию перехода на новую версию. Сервисы уже перенесены, нам осталось перенести данные.
Помощь мастера миграции состоит в том, что он генерирует SQL-скрипты для переноса данных из одной базы в другую (с учетом перечня полей у таблицы в одной и в другой базе). При этом можно указать необходимость очистки таблиц назначения перед переносом, и проверки на существование данных перед вставкой.
Кроме того, генерируется два скрипта, на отключение триггеров и внешних ключей, и на их включение (миграция производится на СУБД Microsoft SQL Server).
Перед выполнением шага 3 отключаем триггеры и внешние ключи.
Шаг 3. Перенос данных о пользователях и группах.
Эти данные важно перенести в первую очередь, так как вся прочая информация ссылается на пользователей или контакты (например, записи о правах, поля CreatedByID, ModifiedByID и т.п.)
Фактически переносим данные всего четырех таблиц:
- tbl_Account, tbl_Contact - только те записи, которые касаются пользователей системы, и только поля ID и Name (остальные поля будем переносить уже у клиента);
- tbl_AdminUnit и tbl_UserInGroup - полностью.
Шаг 4. Перенос справочных данных.
Перенос справочных данных в сгенерированном скрипте выделен отдельно (на основании данных таблицы tbl_DictionarySettings).
Как правило, для справочных таблиц сначала генерируется запрос на удаление всех записей, а потом на вставку из рабочей базы, так как нам важны ИД справочных записей.
После выполнения шага 4 включаем триггеры и внешние ключи.
На данном этапе можно провести тестирование базы на работоспособность. У нас должна работать вся логика.
Шаг 5. Перенос основных данных.
Ставим дамп клиенту, и начинаем переносить основные данные, используя вторую часть сгенерированного скрипта.
Предварительно отключаем триггеры/внешние ключи, после выполнения скрипта включаем их.
Шаг 6. Корректировка данных пользователей.
Так как между 3.0.4 и 3.3.1 большая разница в плане реализации прав доступа к данным, после переноса данных с помощью отдельных скриптов на Transact-SQL необходимо:
- создать роли для групп пользователей (используя данные из tbl_AdminUnit);
- создать логины и пользователей в базе (используя данные из tbl_AdminUnit);
- включить пользователей в роли (используя данные из tbl_UserInGroup);
- перенести права на группы таблиц (записи из tbl_TableGroupRight);
- перенести права по умолчанию (записи из tbl_TableDefaultRight);
- перенести права на поля (используя данные из tbl_TableFieldRight).
Осталось протестировать работоспособность новой версии, и клиент может приступать к работе.
Буду рад, если эта информация пригодится кому-либо в работе. Если будут вопросы - с удовольствием отвечу.