Иногда бывает, что система ругается на отсутствие лицензий и не пускает даже Supervisor-а, но при этом в менеджере лицензий все галочки в нужных местах стоят.
Вот скрипт, который очистит таблицы базы данных SysLicUser, SysLic и SysLicPackage от информации о старых и повреждённых лицензиях. Это должно помочь удалить «неиспользуемые» записи в этих 3 таблицах, а также лицензии, у которых вышел срок.
Чтобы просто проверить наличие таких записей, замените «delete» на «select *».
delete from "SysLicUser"
where "Id" not in (select slu."Id" from "SysLicUser" slu
inner join "SysLicPackage" slp on slp."Id" = slu."SysLicPackageId"
inner join "SysAdminUnit" sau on sau."Id" = slu."SysUserId"
inner join "Contact" c on c."Id" = sau."ContactId"
where slu."Active" = '1'
)
delete from "SysLic"
where "SysLicPackageId" not in (select slp."Id" from "SysLicUser" slu
inner join "SysLicPackage" slp on slp."Id" = slu."SysLicPackageId"
inner join "SysAdminUnit" sau on sau."Id" = slu."SysUserId"
inner join "Contact" c on c."Id" = sau."ContactId"
where slu."Active" = '1'
)
or "DueDate" < GETDATE() --если Oracle, то заменить на SYSDATE без скобок
delete from "SysLicPackage"
where "Id" not in (select slp."Id" from "SysLicUser" slu
inner join "SysLicPackage" slp on slp."Id" = slu."SysLicPackageId"
inner join "SysAdminUnit" sau on sau."Id" = slu."SysUserId"
inner join "Contact" c on c.Id = sau."ContactId"
where slu."Active" = '1'
)
Если это не поможет, придётся полностью очистить таблицы лицензий запросами:
delete from "SysLicUser"
delete from "SysLic"
delete from "SysLicPackage"
Учтите, это удаляет лицензии всем пользователям, их надо перезаказывать и распределять заново. Перед удалением можно сделать скриншот, у кого какие лицензии были.
Учтите, что пока новые лицензии не будут загружены, пользователи не смогут работать в системе, манипуляцию лучше проводить в нерабочее время.
В любом случае перед использованием скриптов для удаления записей лучше сделать резервную копию базы, если есть техническая возможность.