У Sybase есть способ взаимодействия приложения с " данные контекста, такие как имя конечного пользователя приложения и т. д., в сеанс подключения к базе данных. Контекстные данные — это просто набор пар ключ-значение, которые хранятся/извлекаются через set_appcontext
/get_appcontext
хранимых процессов.
ВОПРОС:
Есть ли у других основных серверов БД (MSSQL/Oracle/MySQL) средство для передачи контекста приложения в сеанс, аналогичное set_appcontext
Sybase?
Подробности:
Одно конкретное практическое использование контекста приложения — это когда у вас есть приложение со средним уровнем, подключающееся к базе данных в качестве очень конкретного общего пользователя базы данных (примеры включают «webuser»/«http» для серверной части веб-приложения, работающей на веб-сервере, или « myappserver» для сервера приложений).
Когда это происходит, мы по-прежнему хотим, чтобы сеанс базы данных знал, кто является КОНЕЧНЫМ пользователем (например, фактический пользователь, использующий клиент приложения), либо для контроля доступа, либо (более актуально для меня), чтобы триггер аудита/истории мог чтобы определить, какой конечный пользователь внес изменение, и занести информацию об этом конечном пользователе в таблицу аудита.
Обратите внимание, что информация устанавливается на уровне сеанса, а это означает, что любые вставки/обновления/удаления, выполняемые в рамках этого сеанса, могут использовать данные контекста без их передачи в каждый отдельный оператор SQL — это ОЧЕНЬ важно, скажем, для триггер.
В качестве очень конкретного примера того, почему это полезно, скажем, у вас есть сервер приложений, запускающий сеанс БД от имени клиента, в котором вы вставляете/обновляете/удаляете строки в 5 различных таблицах. Вы хотите иметь таблицы аудита для каждой из этих 5 таблиц, которые включают информацию о том, «какой конечный пользователь внес каждое изменение».
Используя данные контекста, вы можете просто получить данные «конечного пользователя» из контекста приложения с помощью триггера и сохранить их как часть записи таблицы аудита. Без использования контекста приложения вам нужно будет (1) добавить столбец «конечный пользователь» в каждую из этих 5 таблиц (вместо только таблиц аудита) и (2) изменить сервер приложений для вставки или установки при обновлении. значение этого столбца в КАЖДОЙ инструкции SQL, которую выдает сервер приложений. О, и это даже не касается того, как это можно сделать, если вы удаляете строку.