четверг, 7 апреля 2016 г.

Cache': Просмотр базы read-only

Если в каше смонтировать базу данных в режиме "только чтение", то проводник не показывает список имеющихся глобалов с сообщением об ошибке.
---------------------------
Сообщение об ошибке
---------------------------
<PROTECT>onedir+2^%GXLINFO
---------------------------
ОК
---------------------------
Смонтировать базу данных только на чтение можно в редакторе конфигурации, закладка "Базы данных", в списке выбрать базу данных, правая кнопка, меню "изменить", в диалоге настроек поставить галочку "только чтение". После этого требуется перезапуск сервера.

Если после этого проводником попробовать посмотреть список глобалов то происходит вышеприведенная ошибка.

Ошибка происходит из-за того что используемый проводником код использует для построения списка глобалов несколько служебных глобалов, ^%utility, ^UTILITY,^mtemp.

Глобаль ^%utility при монтировании датасета по умолчанию мапится в базу %CACHELIB.

Глобаль ^mtemp при монтировании датасета по умолчанию мапится в базу CACHETEMP.

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

Включить маппинг глобала можно в редакторе конфигурации. Закладка Области, в списке имеющихся выбрать область, раскрыть узел, выбрать строку "отображение глобалов", нажать кнопку "добавить", ввести имя глобала UTILITY. В дереве областей в добавленном узле выбрать строку "Расположение Данных", нажать кнопку "Изменить" и указать в какой базе данных должны физически находиться данные этой глобали, например CACHETEMP. Изменение маппинга не требует перезапуска сервера.

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

Комментариев нет:

Отправить комментарий