Directum RX. Пересадка базы данных

27 7

Часто так бывает, что при разработке решений на машине разработчика очень не хватает данных, которые есть на боевом сервере. Можно, конечно, создавать всё руками, но это, во-первых, отнимает время, а, во-вторых, не спасает от ошибок, связанных с тем, что в боевой базе несколько иные данные, и пользователи, конечно же, ведут себя совсем не так, как разработчики и аналитики.

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

Предупреждение. Данные действия могут идти вразрез с политикой безопасности клиента, поэтому перед тем как выполнять перенос, уточните у клиента легитимность данного действия.

Подготовимся к переносу:

  • Останавливаем службы на боевом сервере (или серверах, если их несколько)
iisreset /stop && net stop DrxServiceRunner
  • Делаем резервную копию боевой базы данных
  • Делаем копию файлового хранилища (или сразу копируем на машину разработчика)
  • После того, как мы сделали копию боевой базы и файлового хранилища запускаем боевой сервер
iisreset /start && net start DrxServiceRunner
  • На всякий случай копируем из файла конфигурации (любого) строку с параметром PRIMARY_TENANT
<var name="PRIMARY_TENANT" value="" />

Теперь боевой сервер нам больше не понадобится, и все дальнейшие действия мы будем производить на машине разработчика.

  1. Восстанавливаем базу данных на сервер СУБД
  2. При необходимости даем пользователю БД права на восстановленную базу
  3. Копируем файловое хранилище на машину разработчика
  4. Останавливаем службы и пулы
iisreset /stop && net stop DrxServiceRunnerLocal

Обратите внимание! Пулы приложений и службы, поставляемые с инструментом разработки, имеют суффкис Local, в то время как "боевые" инсталляции его лишены.

  1. Исправляем файлы конфигурации
    1. В файле
C:\inetpub\wwwroot\DrxServiceRunnerLocal\Conf\DrxStorageServiceLocal_ConfigSettings.xml

меняем параметр STORAGE_PATH на папку хранилища, скопированного с боевого сервера.

<var name="STORAGE_PATH" value="C:\Storage" />
  1. Далее нам понадобится исправить параметры PRIMARY_TENANT (код системы) и CONNECTION_STRING (строка подключения к БД) в следующих файлах конфигурации:
    1. Для CONNECTION_STRING:
C:\inetpub\wwwroot\DirectumRxLocal\_ConfigSettings.xml
C:\inetpub\wwwroot\DirectumRxWebLocal\api\_ConfigSettings.xml
C:\inetpub\wwwroot\DrxServiceRunnerLocal\Conf\DrxDelayedOperationsServiceLocal_ConfigSettings.xml
C:\inetpub\wwwroot\DrxServiceRunnerLocal\Conf\DrxJobSchedulerLocal_ConfigSettings.xml
C:\inetpub\wwwroot\DrxServiceRunnerLocal\Conf\DrxWorkerLocal_ConfigSettings.xml
C:\inetpub\wwwroot\DrxServiceRunnerLocal\Conf\DrxWorkflowBlockServiceLocal_ConfigSettings.xml
C:\inetpub\wwwroot\DrxServiceRunnerLocal\Conf\DrxWorkflowProcessServiceLocal_ConfigSettings.xml

Меняем строку подключения, чтобы подключаться к восстановленной базе. Также, если, например, вы изначально установили инструмент разработки под MsSQL, а боевая база данных на PostgreSQL - то также смените параметр DATABASE_ENGINE

<var name="DATABASE_ENGINE" value="Postgres" />
  1. Меняем PRIMARY_TENANT на тот, что скопировали с боевого файла конфигурации в тех же файлах что на предыдущем шаге, и в файле:
C:\inetpub\wwwroot\DrxServiceRunnerLocal\Conf\DrxStorageServiceLocal_ConfigSettings.xml
  1. После обновления и сохранения файлов конфигурации запускаем пулы и службы
iisreset /start && net start DrxServiceRunnerLocal
  1. Открываем DirectumRX, модуль "Администрирование", справочник "Хранилища", устанавливаем адрес сервиса хранилищ 
http://localhost/DrxStorageServiceLocal

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

Сергей Королев
Сергей Королев

Дополнение к п.3: прекрасная, быстрая и с большим набором возможностей много-потоковая БЕСПЛАТНАЯ утилита Windows 10, которая сильно ускоряет синхронизацию файловых хранилищ - robocopy:
robocopy "\\РабСервер\c$\DrxDocs" "C:\DrxDocsCopy" /e /purge /mt:8 /log:c:\temp\drxdocOrg.log

Сергей Королев: обновлено 24.09.2021 в 12:50
Дмитрий Панкрашов

Сергей, можно еще rsync, но не тестил в таком режиме, т.к. копировать ФХ "на лету" та еще лотерея.

Борис Густяков

После всего перечисленного удалось войти в базу - победа. Но. при попытке запустить фоновый процесс всплывает окно что процесс запущен, но вот в журнале работы процессов записи не появляются - вообще. Ни о запуске ни о прекращении ни о падении. Что еще пропущено в настройках?

Станислав Зыкин

Борис, скорее всего не сконфигурирован RabbitMQ.

Борис Густяков

Станислав,  сконфигурирован

 

Саят Казырханов

Добрый день! Не подскажете? Пересадил базу данных и теперь не могу опубликоваться, пишет "Генерация структуры данных завершилась с ошибкой". Разве в базе данных все необходимые связи между решениями уже не существуют? Публиковать решения по очереди не получится потому что уже слишком разрослась ссылочность на справочники решений соседних решений.

Авторизуйтесь, чтобы написать комментарий