Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Чт Апр 16, 2015 09:08  пересоздание синонимов |
|
Полезность: Нет оценки
|
А как можно пересоздать синонимы у всех пользователей? В АРМе доступа этот пункт криво работает - точнее никак не работает. Можно пересоздать только одному, чтобы пересоздать следующему надо перезайти в АРМ. Какие еще варианты массового пересоздания? Спасибо.
Вот это SecAdmin.CreateSynonymsForSubject(u.[USERNAME],True, True); Работает только 1 раз. Чтобы сработало еще - надо перезайти в навигатор. В общем как в АРМе доступа |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Чт Апр 16, 2015 09:37   |
|
Полезность: 1
|
как то так, например
Код: |
v_uname rtl.string40_table;
v_utype rtl.boolstring_table;
v_clear boolean := true; -- Признак удаления неиспользуемых прав
-- загрузка списка субъектов доступа
select u(u.[username],decode(u.lock_status,'DELETED','D','TO_DELETE','D',u.[type])) in users%rowtype
where u.[username]<>owner and u.[type] is not null
into v_uname,v_utype;
-- раздача прав на объекты-зависимости отчетов
for u in 1..v_uname.count where v_utype(u)<>'D'
loop
begin
secadmin.SetReportRightsForSubject(v_uname(u),v_clear,true,false);
write_log('RIGHTS');
exception when others then
debug_log(v_uname(u)||': '||sqlerrm,0,false,'ERROR');
end;
end loop;
commit;
-- раздача грантов на пакеты-зависимости отчетов и создание синонимов
for u in 1..v_uname.count where v_utype(u)<>'G'
loop
begin
secadmin.CreateSynonymsForSubject(v_uname(u),v_clear,true);
write_log('GRANTS');
exception when others then
debug_log(v_uname(u)||': '||sqlerrm,0,false,'ERROR');
end;
end loop;
commit;
|
|
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Чт Апр 16, 2015 09:43   |
|
Полезность: Нет оценки
|
Так срабатывает только у первого юзера. У остальных все ОК, но не пересоздзает. АРМ доступа также делает. Если перезайти опять один раз пересоздаст.
попробовал commit поставить после каждого пересоздания - не помогло. Видимо в контекст или еще куда сохраняет что то. Помогает только перезаход, чтобы почистилось. |
|
 |
Igorka Профи
Вступление в Клуб: 28.09.2007
|
Чт Апр 16, 2015 12:46   |
|
Полезность: 1
|
C_SYN.SQL в пакете обновления ядра вроде есть |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Чт Апр 16, 2015 13:02   |
|
Полезность: 1
|
Igorka пишет: | C_SYN.SQL в пакете обновления ядра вроде есть |
Спасибо за наводку . Дело в параметре максимальное кол-во ролей. Видимо по умолчанию 1. Добавил в операцию перед пересозданием синонимов вот это
secadmin.set_max_report_roles(20);
Интересно для чего это ограничение и почему в АРМ доступа его не поправят? |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Чт Апр 16, 2015 14:10   |
|
Полезность: Нет оценки
|
вопрос в догонку.
Может у нас какие то параметры на схеме неправильные? И при накатах ядра эти синонимы не пересоздаются? И АРМ доступа возможно криво поэтому же работает?
В этом же скрипте C_SYN.sql есть строка exec :sMode:= '&&reproles'
Откуда это количество берет? |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Ср Апр 22, 2015 16:03  Re: пересоздание синонимов |
|
Полезность: Нет оценки
|
Наблюдал ситуацию, что при последовательном вызове SecAdmin.CreateSynonymsForSubject во второй и последующие разы не создаются все синонимы. Перезапуск в новой сессии помогал.
ЦФТ ответил, что с ТЯ 7.3 используется некое кэширование и перед SecAdmin.CreateSynonymsForSubject необходимо сбрасывать кэш SecAdmin.reset_report_roles_cache.
Gobur пишет: | В АРМе доступа этот пункт криво работает - точнее никак не работает. Можно пересоздать только одному, чтобы пересоздать следующему надо перезайти в АРМ. Какие еще варианты массового пересоздания? | Такого у себя не наблюдаю. Может устарел UADM? |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Ср Апр 22, 2015 16:08   |
|
Полезность: 1
|
vtar пишет: | как то так, например
Код: |
...secadmin.SetReportRightsForSubject(v_uname(u),v_clear,true,false);
write_log('RIGHTS');
... |
|
для вывода информации о выполненных действиях после SetReportRightsForSubject использую конструкцию:
Код: | stdio.put_line_pipe(executor.Get_Debug_text('B',true),'DEBUG$100'); |
|
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Ср Апр 22, 2015 16:19  Re: пересоздание синонимов |
|
Полезность: Нет оценки
|
timochev пишет: | Наблюдал ситуацию, что при последовательном вызове SecAdmin.CreateSynonymsForSubject во второй и последующие разы не создаются все синонимы. Перезапуск в новой сессии помогал.
ЦФТ ответил, что с ТЯ 7.3 используется некое кэширование и перед SecAdmin.CreateSynonymsForSubject необходимо сбрасывать кэш SecAdmin.reset_report_roles_cache.
|
Спасибо - попробую . Хотя помогал и вариант, который я описал. UADM старый, новый я так понимаю тока под WIN7 работает? |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Ср Апр 22, 2015 16:43  Re: пересоздание синонимов |
|
Полезность: Нет оценки
|
Gobur пишет: | UADM старый, новый я так понимаю тока под WIN7 работает? | Да |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Май 18, 2015 16:17  Re: пересоздание синонимов |
|
Полезность: Нет оценки
|
А в новом Арме доступа не было проблем при разблокировке пользователя |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Пн Май 18, 2015 16:59   |
|
Полезность: 1
|
По-моему, не работает разблокировка с одновременным изменением пароля. Без изменения пароля - работает. |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Вт Май 19, 2015 12:32   |
|
Полезность: Нет оценки
|
timochev пишет: | По-моему, не работает разблокировка с одновременным изменением пароля. Без изменения пароля - работает. |
спасибо, помогло. Думал джоб стал криво работать.
З.Ы. Пересоздание синонимов всем пользователям поправили. Теперь через АРМ корректно отрабатывает. |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Вт Май 19, 2015 12:34   |
|
Полезность: Нет оценки
|
раз проблема подтвердилась, то зарегистрирую заявку
PS. ЦФТ признал несоответствие BS00926463, планируется завершить 16.08.2015 18:00:00. |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Ср Май 27, 2015 08:16   |
|
Полезность: Нет оценки
|
Чтоб не заводить новуб темку спрошу здесь. Видел пункт в новом АРМе - пересоздание контекста у пользователя. А программно это можно сделать? |
|
 |
|