Show/Hide Toolbars

Руководство администратора

Утилита миграции RedGate (Устаревшее)

Ссылки Назад Вверх Вперед

 Устаревшее

Утилита миграции Redgate не встроена в платформу, она устанавливается отдельно. Утилита Redgate переносит настройки и данные. Утилита не перезаписывает данные полностью, а сравнивает и обновляет\добавляет данные. Она используется в более сложных случаях миграции и требует отдельного лицензирования.

Для переноса настроек между двумя экземплярами "Первой Формы" (исходным и целевым) используется утилита RedGate.

Скачать утилиту можно по ссылке. Базовую конфигурацию для переноса данных "Первой Формы" можно загрузить здесь. Эту конфигурацию можно настроить под конкретную инсталляцию "Первой Формы" и сохранить под другим именем для дальнейшего использования.

warning_icon Обратите внимание:

Утилита переносит только настройки и связанные с ними объекты (группы, элементы орг. структуры и т.п.) и не переносит хранимые процедуры, функции и представления!

Версии приложения "Первая Форма" на исходной и целевой БД должны быть идентичными.

Главное условие корректного переноса конфигурации (настроек) между экземплярами "Первой Формы" – то, что на целевом сервере не должны вестись работы по настройке системы. Все настройки, такие как создание/редактирование/удаление категорий, ДП, смартов и т.п., выполняются на исходном сервере и по завершении работы переносятся на целевой. Однако на целевом сервере могут работать пользователи (т.е. могут создаваться задачи, выполняться переходы по маршруту и т.п.).

Утилита не создает недостающие таблицы (т.е. те, которые есть в исходной БД, но отсутствуют в целевой). Их необходимо создать вручную заранее, до переноса.

warning_icon  При включенном миграционном ключе появляются ограничения на таблицы БД приложения "Первая Форма", и это порождает ошибки при использовании утилиты RedGate. Чтобы избежать этого, нужно выполнить два скрипта: перед миграцией — NocheckIdentityScript (отключает ограничения) и после миграции — CheckIdentityScript (включает их обратно).

Использование

1.Установите утилиту Redgate SQL Data Compare на компьютер, который имеет доступ к обеим БД (исходной и целевой).

2.Дважды кликните на сформированную конфигурацию для переноса.

3.Откроется окно с источником данных, где слева – исходная БД (откуда берутся настройки), а справа – целевая БД (куда переносятся). В выпадающем списке выберите нужные серверы, заполните аутентификацию и выберите БД, между которыми нужно выполнить перенос.

Сохраните конфигурацию, нажав Save  или Save as. В дальнейшем при открытии данной конфигурации не нужно будет заново выбирать серверы и БД.

redgate_data_source

 Выбор серверов и БД.

4.Нажмите кнопку Compare now. Появится окно, в котором утилита будет сравнивать данные и строить зависимости. По завершении процесса нажмите Ok.

5.В основном окне утилиты появятся данные, которые отличаются и которые можно перенести. Раскройте список different (если он не раскрыт по умолчанию) – эта та часть настроек, которая будет переноситься.

redgate_compare_window

 Сравнение выполнено.

6.По середине списка есть три столбца: Source Only, Different, Target Only. Столбец Source Only показывает данные, которые есть только в исходной БД; Different — данные, которые есть в обеих БД, но в исходной они отличаются, и поэтому при переносе в целевую БД будут обновлены; Target Only — данные, которые есть только в целевой БД и нет в исходной, т.к. они были удалены, и поэтому при переносе данные также будут удалены из целевой БД.

Убедитесь, что во всех трех столбцах для всех строк флажки отмечены. Это можно проверить также с помощью значений Selected. Затем нажмите кнопку Deploy now.

redgate_differents

 Все флажки отмечены.

7.Откроется окно переноса данных. Отметьте галочку Back up target before deployment (если она не отмечена), чтобы создалась резервная копия боевой базы, и нажмите кнопку Next.

redgate_deployment

 Подтвердите необходимость резервного копирования.

8.Откроется окно для настроек резервного копирования. Заполните информацию и снова нажмите кнопку Next.

9.Начнется генерация скрипта переноса. По окончании процесса отобразится окно с предупреждениями и со скриптом, который можно посмотреть в соответствующей вкладке. Предупреждения о циклических зависимостях, отсутствии таблицы в переносе, на которые настроен FK, и т.п. – допустимы, игнорируйте их. Нажмите кнопку Deploy now.

redgate_deployment_script

 Предупреждения, которые можно игнорировать.

10. Начнется процесс переноса, который может занять некоторое время в зависимости от объема переносимых данных. По окончании процесса отобразится либо окно с сообщением об успешном переносе, либо окно с ошибкой и sql кодом, в рамках которого она произошла. Во втором случае необходимо поставить задачу об ошибке с описанием проделанных действий и выданным sql кодом.

11. После завершения процесса переноса проверьте, нужно ли вам обновить ID почтового ящика в смартах на отправку системного email (если такие смарты есть и если текущий ящик отличается от того, что указан в настройках):

SELECT pap.*

FROM PacksActions pa
JOIN PacksActionsParameters pap ON pap.PackActionID = pa.ID AND ParameterOrder = 0
WHERE pa.ActionID = 44 AND pap.Value <> (select MailBoxForSystemMessagesId from EmailSettings)

Если обновить нужно, запустите скрипт:

UPDATE PacksActionsParameters SET Value = (select MailBoxForSystemMessagesId from EmailSettings)
FROM PacksActions pa
JOIN PacksActionsParameters pap ON pap.PackActionID = pa.ID AND ParameterOrder = 0
WHERE pa.ActionID = 44 AND pap.Value <> (select MailBoxForSystemMessagesId from EmailSettings)

Разбор ошибок

1.При включенном миграционном ключе появляются ограничения на таблицы БД приложения "Первая Форма", и это порождает ошибки при использовании утилиты RedGate. Чтобы избежать этого, нужно выполнить два скрипта: перед миграцией — NocheckIdentityScript (отключает ограничения) и после миграции — CheckIdentityScript (включает их обратно).

2.При переносе возможно возникновение ошибки вида "Cannot insert duplicate key row in object <имя таблицы> with unique index <имя индекса>" или "The ALTER TABLE statement conflicted with FOREIGN KEY constraint <название индекса>". Она может возникать в одном из следующих случаях:

a.Если в исходной и целевой базах объект с одним и тем же GUID имеет разные ID. Это можно посмотреть через SQL Server Management Studio. В этом случае нужно удалить соответствующую строку из таблицы на целевой БД, и при следующей попытке миграции эта строка загрузится из исходной БД.

b.При переносе связанных таблиц. Например, в категории настроены кнопки, которые отображаются на определенном статусе. Если таблица с описанием кнопок переносится раньше, чем таблица с описанием статусов, возникнет ошибка. В этом случае можно сначала перенести настройки, исключив из них таблицу с описанием кнопок (сняв флажок в соответствующей строке), а затем отдельно таблицу с описанием кнопок.