FirebirdSQL logo
 Операторы определения данных (DDL)SHADOW 

Изменение привилегий выполнения по умолчанию

Начиная с Firebird 4.0 появилась возможность указывать объектам метаданных с какими привилегиями они будут выполняться: вызывающего или определяющего пользователя.Для этого используется предложение SQL SECURITY, которое можно указать для таблицы, триггера, процедуры, функции или пакета.Если выбрана опция INVOKER, то объект метаданных будет выполняться с привилегиями вызывающего пользователя.Если выбрана опция DEFINER, то объект метаданных будет выполняться с привилегиями определяющего пользователя (владельца). Если при создании PSQL модуля или таблицы предложение SQL SECURITY не задано, то по умолчанию используется опция INVOKER.

Предложение SET DEFAULT SQL SECURITY изменяет привилегии выполнения с которым по умолчанию выполняются PSQL модули (хранимые процедуры, функции и пакеты).

Example 1. Изменение привилегий выполнения по умолчанию

После выполнения данного оператора PSQL модули по умолчанию будут выполняться с опцией SQL SECURITY DEFINER

ALTER DATABASE SET DEFAULT SQL SECURITY DEFINER;

LINGER

Предложение SET LINGER позволяет установить задержку закрытия базы данных.Этот механизм позволяет Firebird в режиме SuperServer, сохранять базу данных в открытом состоянии в течение некоторого времени после того как последние соединение закрыто, т.е.иметь механизм задержки закрытия базы данных.Это может помочь улучшить производительность и уменьшить издержки в случаях, когда база данных часто открывается и закрывается, сохраняя при этом ресурсы “разогретыми” до следующего открытия.

Tip

Такой режим может быть полезен для Web приложений, в которых коннект к базе обычно “живёт” очень короткое время.

Предложение DROP LINGER удаляет задержку и возвращает базу данных к нормальному состоянию (без задержки). Эта команда эквивалентна установки задержки в 0.

Tip

Удаление LINGER не самое лучшее решение для временной необходимости его отключения для некоторых разовых действий, требующих принудительного завершения работы сервера.Утилита gfix теперь имеет переключатель -NoLinger, который сразу закроет указанную базу данных, после того как последнего соединения не стало, независимо от установок LINGER в базе данных.Установка LINGER будет сохранена и нормально отработает в следующий раз.

Кроме того, одноразовое переопределение доступно также через сервисы API, с использованием тега isc_spb_prp_nolinger, например (в такой строке):

fbsvcmgr host:service_mgr user sysdba password xxx
action_properties dbname employee prp_nolinger
Example 1. Установка задержки в 30 секунд
ALTER DATABASE SET LINGER TO 30;
Example 2. Удаление задержки
ALTER DATABASE DROP LINGER;

или

ALTER DATABASE SET TO LINGER 0;