Перейти к основному содержимому

Роль репликации

Роль – это механизм SQL предоставления пользователю БД привилегий доступа к объектам БД. Владелец базы назначает роли некоторые привилегии (например, удалять записи из определенной таблицы). При подключении к БД пользователь может использовать ту или или иную разрешенную ему роль, получая при этом соответствующие права.

Механизм ролей используется при репликации БД МИС "Инфоклиника" для различения обычного пользователя и репликатора.

Триггеры в БД МИС (в частности, триггеры журналирования изменений) должны по-разному реагировать на действия обычного пользователя БД и действия репликатора. Действия пользователя должны журналироваться и сопровождаться вызовом пользовательских триггеров, предусмотренных бизнес-логикой МИС "Инфоклиника". Напротив, действия репликатора, как правило, не должны журналироваться и являться причиной изменений, выполняемых пользовательскими триггерами.

Проверив роль текущего пользователя, триггер может выполнять разные действия для обычного пользователя и пользователя с ролью "репликатор".

Роль "репликатор" создается в БД при подготовке к репликации. Имя роли задается через интерфейс менеджера репликации (по умолчанию имя роли репликатора – REPL).

Триггеры, создаваемые репликатором, выполняют проверку роли текущего пользователя. Пользовательские триггеры БД МИС "Инфоклиника" должны быть изменены так, чтобы выполнять эту проверку.

Проверка роли текщего пользователя выполняется с помощью создаваемой в БД процедуры REPL$GETACCESS, которая возвращает строку с именем роли текущего пользователя. Проверка, является ли текущий пользователь репликатором, имеет вид (для стандартного имени роли):

IF (EXISTS(SELECT * FROM REPL$GETACCESS WHERE REPL$ACCESS = 'REPL')) THEN

BEGIN

...

END

Была ли статья полезна?