Вопрос

Долгое выполнение актуализации ролей при синхронизации с LDAP

Добрый день! Перерабатываю синхронизацию с LDAP. Заказчик требует выполнять раз в сутки полную синхронизацию и чуть ли не каждые 15 мин частичную. То есть при частичной только добавление новых пользователей и обновление измененных в течении последних 15 мин. После синхронизации в штатной реализации выполняется процедура актуализации ролей. Эта процедура вызывает хранимую процедуру tsp_ActualizeAdminUnitInRole, которая в свою очередь вызывает хранимую процедуру tsp_GetAdminUnitList. На 50000 пользователях эта хранимая процедура выполняется слишком долго (перекрывает 15 минут). Хотелось бы понять, что делает tsp_ActualizeAdminUnitInRole, в чем ее назначение? Если пользователи просто добавляются в группу "All Employees" и еще в одну, вложенную в "All Employees", возможно ли отключить вызов ХП tsp_ActualizeAdminUnitInRole при частичной синхронизации и вызывать только обновление кэша SysAdminUtilities.ReloadSysAdminUnitsCache?

Нравится

1 комментарий

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

По словам разработчиков, актуализацию переделали на версии 7.17.1, там  она работает на порядок быстрее.

Они рекомендуют обновиться до версии 7.17.1+.

Учтите только при разработке своей интеграции, что новая логика уже не использует эти хранимки, то есть их прямой запуск Вам не подойдёт.

Показать все комментарии