GRANT_ALL_RIGHTS(); GRANT_ALL_RIGHTS(ASLName: STRING[]; ModeOrProcPattern: STRING[]); |
Процедура дает транзакциям некоторых программ (каких именно - зависит от параметров) привилегию полного доступа ко всем регулярным таблицам БД. Исключений не выбрасывает. Привилегия соответствует правам доступа "SVIRD A". На подключаемые таблицы БД привилегия не распространяется.
Первый вариант процедуры (без параметров) временно дает привилегию полного доступа транзакции исполняемой программы. Если процедура вызывается из тела TRY-блока, привилегия действует в пределах тела TRY-блока. Иначе привилегия действует до завершения программного комплекса. Особый случай - обработчики событий, настраивающие режим видеопроцесса; в зоне с интерактивным редактированием, в (транзитивно) подчиненных зонах и (транзитивно) зависимых окнах, а также во всех справочных к ним окнах, интерактивный пользователь получит ту же привилегию. Обработчики событий OnBeforeEdit и OnBeforeInsert вызываются уже после начала процесса интерактивного редактирования; для входа в редактирование пользователь должен иметь соответствующие права. Обработчик OnSetSubwindow работает до начала интерактивного редактирования, т.е. может назначить привилегию стартующему процессу.
Второй вариант процедуры (с параметрами) пополняет перечень привилегированных программ, хранящийся на сервере ASB. Перечень состоит из пар (ASLName + ModeOrProcPattern), относится к текущему ASB-подключению, и уничтожается в момент закрытия подключения. Привилегия распространяется на программные комплексы, запущенные опциями RunProg, CALL и CallBP, а также на обработчики программных событий, но не распространяется на NTF- и DBS-программные комплексы. Привилегия присваивается программному комплексу в момент старта, т.е. не распространяется на программный комплекс, вызвавший данную процедуру. Процедура нетранзакционна. Пара (ASLName + ModeOrProcPattern) моментально попадает в перечень привилегированных программ, а откаты транзакций на содержимое перечня не влияют.
Ниже перечислены некоторые особенности поведения процедуры.
Для таблицы SYSLOG привилегия соответствует правам доступа "SV", что позволяет обращаться к записям по чтению, а также выполнять процедуру SysLog.Mark.
Функция FILERIGHTS в привилегированных программах возвращает права на таблицы БД с учетом привилегии, т.е. "SV" для SYSLOG и не менее "SVIRD A" для остальных таблиц.
В диалоге "Структура базы данных" (Ctrl+F10) права отображаются без учета привилегии.
GRANT_ALL_RIGHTS("RWayS", "05?"); |