Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Пн Июл 21, 2014 15:59  SYS_CONTEXT(»..._RIGHTS»,».....») - как |
|
Полезность: Нет оценки
|
Здравствуйте.
Есть пользователь РОБОТ - из-под навигатора представление под ним открывается - как надо.
Но вот при выполнении из-под того же РОБОТ в Джобе - возникли проблемы с инициализацией контекста:
Код: | SYS_CONTEXT("ибсо_RIGHTS",".....") is null |
Условие стоит в части WHERE представления - естественно, представление работает неожиданно (в Джобе).
У нас 2-хзвенка.
Словарь\Системные справочники\Параметры\
SYS_CONTEXT = 1
RIGHTS_CONTEXT = 1
Можно как-то легально инициализировать контекст 'ибсо_RIGHTS' для пользователя при запуске в Джобе? |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Вт Июл 22, 2014 08:04   |
|
Полезность: Нет оценки
|
т.е. в джобе вызывается операция у которой в теле есть селект по представлению ? |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Вт Июл 22, 2014 08:23   |
|
Полезность: Нет оценки
|
Alkov пишет: | т.е. в джобе вызывается операция у которой в теле есть селект по представлению ? |
Совершенно верно.
У операции стоит опция 'Расширенный синтаксис'.
К представлению доступ идет через %rowtype |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Ср Июл 23, 2014 05:14   |
|
Полезность: Нет оценки
|
Damir пишет: | .
К представлению доступ идет через %rowtype |
Ну так напрашивается - убрать этот %rowtype, зачем он если вы из навигатора можете в него заходить ?
p.s. Джоб обычный или текстовый ? |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Ср Июл 23, 2014 06:10  Re: SYS_CONTEXT(»..._RIGHTS»,».....») - |
|
Полезность: 1
|
Damir пишет: |
Есть пользователь РОБОТ - из-под навигатора представление под ним открывается - как надо.
Но вот при выполнении из-под того же РОБОТ в Джобе - возникли проблемы с инициализацией контекста:
Код: | SYS_CONTEXT("ибсо_RIGHTS",".....") is null |
Условие стоит в части WHERE представления - естественно, представление работает неожиданно (в Джобе). |
Использовать в джобе селект по представлению с проверкой доступа плохая практика.
Damir пишет: |
Можно как-то легально инициализировать контекст 'ибсо_RIGHTS' для пользователя при запуске в Джобе? |
executor.set_system_context |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Июл 23, 2014 07:32  Re: SYS_CONTEXT(»..._RIGHTS»,».....») - |
|
Полезность: Нет оценки
|
devor пишет: |
executor.set_system_context |
Во...такое вот помогло :
Код: | executor.set_system_context(true, true, false); |
Еще вопрос: переполнение контекста 'Ибсо_RIGHTS' не может выстрелить?
Т.е. на контекст ограничение, вроде как, 4K - если ТБП+вьшек много (всякого мусора неиспользуемого), то все это будет в контексте 'Ибсо_RIGHTS'.
devor пишет: |
Использовать в джобе селект по представлению с проверкой доступа плохая практика.
|
К сожалению, Архитекторы ИБСО дали мне не очень богатый выбор:
- Либо переписывать в теле операции логику запроса (которая хранится во вьюшке). А это ошибкоопасно - в 1 месте поправил, в другом забыл.
- Либо попасть в список тех, кто использет 'плохую практику'
Кстати, привет архитекторам!  |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Ср Июл 23, 2014 09:13  Re: SYS_CONTEXT(»..._RIGHTS»,».....») - |
|
Полезность: Нет оценки
|
Damir пишет: |
Еще вопрос: переполнение контекста 'Ибсо_RIGHTS' не может выстрелить?
Т.е. на контекст ограничение, вроде как, 4K - если ТБП+вьшек много (всякого мусора неиспользуемого), то все это будет в контексте 'Ибсо_RIGHTS'.
|
4К - это ограничение на размер конкретного значения, а не на количество.
Damir пишет: |
К сожалению, Архитекторы ИБСО дали мне не очень богатый выбор:
- Либо переписывать в теле операции логику запроса (которая хранится во вьюшке). А это ошибкоопасно - в 1 месте поправил, в другом забыл.
- Либо попасть в список тех, кто использет 'плохую практику'
|
Достаточно к представлению сделать расширение и взвести флаг "Не использовать контекст доступа". |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Июл 23, 2014 09:46  Re: SYS_CONTEXT(»..._RIGHTS»,».....») - |
|
Полезность: Нет оценки
|
devor пишет: | Damir пишет: |
devor пишет: |
Использовать в джобе селект по представлению с проверкой доступа плохая практика.
|
К сожалению, Архитекторы ИБСО дали мне не очень богатый выбор:
- Либо переписывать в теле операции логику запроса (которая хранится во вьюшке). А это ошибкоопасно - в 1 месте поправил, в другом забыл.
- Либо попасть в список тех, кто использет 'плохую практику'
|
Достаточно к представлению сделать расширение и взвести флаг "Не использовать контекст доступа". |
И получим с чего начали:
devor пишет: |
Использовать в джобе селект по представлению с проверкой доступа плохая практика.
|
Только проверка доступа в случае {взвести флаг "Не использовать контекст доступа"} делаетя Не через контекст. |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Ср Июл 23, 2014 10:52  Re: SYS_CONTEXT(»..._RIGHTS»,».....») - |
|
Полезность: Нет оценки
|
Damir пишет: | devor пишет: |
Достаточно к представлению сделать расширение и взвести флаг "Не использовать контекст доступа". |
И получим с чего начали:
devor пишет: |
Использовать в джобе селект по представлению с проверкой доступа плохая практика.
|
Только проверка доступа в случае {взвести флаг "Не использовать контекст доступа"} делаетя Не через контекст. |
Без контекста права проверяются селектами к таблицам доступа - это нормально. |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Июл 24, 2014 05:48  Re: SYS_CONTEXT(»..._RIGHTS»,».....») - |
|
Полезность: Нет оценки
|
devor - спасибо, от Вас аж целых 2 работающих решения проблемы.
Проблема понятна, пути решения - тоже понятны, тема закрыта.
Сухой остаток (вдруг кто-то по форуму будет искать)
Пролема:
В Джобах запущенных из-под [не владелец схемы] представления vw_crit_... (если вдруг используются в теле операции через %rowtype) возвращают пустой датасет. Происходит это из-за того, что не инициализируется контекст прав 'Ибсо_Rights'
Варианты решения:
- Запускать джобы из-под [владелец схемы]
тогда контекст прав инициализировать не нужно
- Самостоятельно инициализировать контекст прав: Код: | executor.set_sys_context(true, true, false) |
Работает, но заполненный контекст отъедает какое-то количество памяти у серверного процесса.
- У представления, которое используется в теле операции выставить опцию 'Не использовать контекст'. Если представление дистрибутивное - сделать расширение и в расширении выставить опцию 'Не использовать контекст'.
при таком подходе можно 'проморгать' факт использования представления в теле операции.
- решение из разряда 'Не делай так': не делай джобы, джобы не запускай из-под [не владелец схемы], не используй представления vw_crit_ в теле операций.
Пожелание: хотелось бы, чтобы была возможность пользователю [не владелец схемы] дать права админа (чтобы инициализировался в контексте признак 'админ'). Удобно по пользователю идентифицировать происходящий процесс - т.е. запускать Джобы не из-под [владелец схемы]. |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Чт Июл 24, 2014 07:06  Re: SYS_CONTEXT(»..._RIGHTS»,».....») - |
|
Полезность: Нет оценки
|
Damir пишет: |
Пожелание: хотелось бы, чтобы была возможность пользователю [не владелец схемы] дать права админа (чтобы инициализировался в контексте признак 'админ'). Удобно по пользователю идентифицировать происходящий процесс - т.е. запускать Джобы не из-под [владелец схемы]. |
Включи пользователя в группу доступа "ADMIN_GRP" |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Июл 24, 2014 09:19  Re: SYS_CONTEXT(»..._RIGHTS»,».....») - |
|
Полезность: Нет оценки
|
devor пишет: | Damir пишет: |
Пожелание: хотелось бы, чтобы была возможность пользователю [не владелец схемы] дать права админа (чтобы инициализировался в контексте признак 'админ'). Удобно по пользователю идентифицировать происходящий процесс - т.е. запускать Джобы не из-под [владелец схемы]. |
Включи пользователя в группу доступа "ADMIN_GRP" |
Вкючил - не помогло,в том-то и беда.
На нашей схеме ADMIN_GRP не работает - выставлено:
SYS_CONTEXT('COMP_OPTIONS','ADMIN_GRP_ENABLED.U') = '0'
А как включить фичу - я не знаю.
Поддержка, кстати, на этот вопрос не ответила. |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Чт Июл 24, 2014 12:32  Re: SYS_CONTEXT(»..._RIGHTS»,».....») - |
|
Полезность: Нет оценки
|
Damir пишет: | devor пишет: | Damir пишет: |
Пожелание: хотелось бы, чтобы была возможность пользователю [не владелец схемы] дать права админа (чтобы инициализировался в контексте признак 'админ'). Удобно по пользователю идентифицировать происходящий процесс - т.е. запускать Джобы не из-под [владелец схемы]. |
Включи пользователя в группу доступа "ADMIN_GRP" |
Вкючил - не помогло,в том-то и беда.
На нашей схеме ADMIN_GRP не работает - выставлено:
SYS_CONTEXT('COMP_OPTIONS','ADMIN_GRP_ENABLED.U') = '0'
А как включить фичу - я не знаю.
Поддержка, кстати, на этот вопрос не ответила. |
Это ограничение из лицензии, можно увидеть через Администратор дистрибутива под названием "Наличие административной группы". |
|
 |
|