Устаревшее |
---|
Утилита миграции Redgate не встроена в платформу, она устанавливается отдельно. Утилита Redgate переносит настройки и данные. Утилита не перезаписывает данные полностью, а сравнивает и обновляет\добавляет данные. Она используется в более сложных случаях миграции и требует отдельного лицензирования.
Для переноса настроек между двумя экземплярами "Первой Формы" (исходным и целевым) используется утилита RedGate.
Скачать утилиту можно по ссылке. Базовую конфигурацию для переноса данных "Первой Формы" можно загрузить здесь. Эту конфигурацию можно настроить под конкретную инсталляцию "Первой Формы" и сохранить под другим именем для дальнейшего использования.
Обратите внимание: Утилита переносит только настройки и связанные с ними объекты (группы, элементы орг. структуры и т.п.) и не переносит хранимые процедуры, функции и представления! Версии приложения "Первая Форма" на исходной и целевой БД должны быть идентичными. Главное условие корректного переноса конфигурации (настроек) между экземплярами "Первой Формы" – то, что на целевом сервере не должны вестись работы по настройке системы. Все настройки, такие как создание/редактирование/удаление категорий, ДП, смартов и т.п., выполняются на исходном сервере и по завершении работы переносятся на целевой. Однако на целевом сервере могут работать пользователи (т.е. могут создаваться задачи, выполняться переходы по маршруту и т.п.). Утилита не создает недостающие таблицы (т.е. те, которые есть в исходной БД, но отсутствуют в целевой). Их необходимо создать вручную заранее, до переноса. |
---|
При включенном миграционном ключе появляются ограничения на таблицы БД приложения "Первая Форма", и это порождает ошибки при использовании утилиты RedGate. Чтобы избежать этого, нужно выполнить два скрипта: перед миграцией — NocheckIdentityScript (отключает ограничения) и после миграции — CheckIdentityScript (включает их обратно). |
---|
Использование
1.Установите утилиту Redgate SQL Data Compare на компьютер, который имеет доступ к обеим БД (исходной и целевой).
2.Дважды кликните на сформированную конфигурацию для переноса.
3.Откроется окно с источником данных, где слева – исходная БД (откуда берутся настройки), а справа – целевая БД (куда переносятся). В выпадающем списке выберите нужные серверы, заполните аутентификацию и выберите БД, между которыми нужно выполнить перенос.
Сохраните конфигурацию, нажав Save или Save as. В дальнейшем при открытии данной конфигурации не нужно будет заново выбирать серверы и БД.
Выбор серверов и БД.
4.Нажмите кнопку Compare now. Появится окно, в котором утилита будет сравнивать данные и строить зависимости. По завершении процесса нажмите Ok.
5.В основном окне утилиты появятся данные, которые отличаются и которые можно перенести. Раскройте список different (если он не раскрыт по умолчанию) – эта та часть настроек, которая будет переноситься.
Сравнение выполнено.
6.По середине списка есть три столбца: Source Only, Different, Target Only. Столбец Source Only показывает данные, которые есть только в исходной БД; Different — данные, которые есть в обеих БД, но в исходной они отличаются, и поэтому при переносе в целевую БД будут обновлены; Target Only — данные, которые есть только в целевой БД и нет в исходной, т.к. они были удалены, и поэтому при переносе данные также будут удалены из целевой БД.
Убедитесь, что во всех трех столбцах для всех строк флажки отмечены. Это можно проверить также с помощью значений Selected. Затем нажмите кнопку Deploy now.
Все флажки отмечены.
7.Откроется окно переноса данных. Отметьте галочку Back up target before deployment (если она не отмечена), чтобы создалась резервная копия боевой базы, и нажмите кнопку Next.
Подтвердите необходимость резервного копирования.
8.Откроется окно для настроек резервного копирования. Заполните информацию и снова нажмите кнопку Next.
9.Начнется генерация скрипта переноса. По окончании процесса отобразится окно с предупреждениями и со скриптом, который можно посмотреть в соответствующей вкладке. Предупреждения о циклических зависимостях, отсутствии таблицы в переносе, на которые настроен FK, и т.п. – допустимы, игнорируйте их. Нажмите кнопку Deploy now.
Предупреждения, которые можно игнорировать.
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.При переносе связанных таблиц. Например, в категории настроены кнопки, которые отображаются на определенном статусе. Если таблица с описанием кнопок переносится раньше, чем таблица с описанием статусов, возникнет ошибка. В этом случае можно сначала перенести настройки, исключив из них таблицу с описанием кнопок (сняв флажок в соответствующей строке), а затем отдельно таблицу с описанием кнопок.