powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите настроить логирование в триггере
10 сообщений из 10, страница 1 из 1
Помогите настроить логирование в триггере
    #39629002
serg_warlock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fb 2.5.8

в триггере before update добавляю следующую конструкцию.

---------------------------------------------------------
insert into rkc_area_logs (
LODGINGS_ID,
start_period_old,
start_period_new,
Living_area_old,
Living_area_new,
total_area_old,
total_area_new,
DATE_upd,
ip_address,
process)
Select new.lodgings_id,
old.start_period,
new.start_period,
old.living_area,
new.living_area,
old.total_area,
new.total_area,
current_date,
a.MON$REMOTE_ADDRESS,
a.MON$REMOTE_PROCESS
from MON$TRANSACTIONS t
join MON$ATTACHMENTS a on t.MON$ATTACHMENT_ID=a.MON$ATTACHMENT_ID
where t.MON$TRANSACTION_ID= current_transaction;

---------------------------------------------------------

Тестируюсь в IBExperte, при апдейте целевой таблицы запись в таблицу логов идет, и MON$REMOTE_ADDRESS такой как надо 192.168.0.25,
а при апдейте целевой таблицы из сторонней программы, в MON$REMOTE_ADDRESS пишется 127.0.0.1. Хотя, сторонняя программа запускается с моей же машины и адрес должен быть 192.168.0.25.
...
Рейтинг: 0 / 0
Помогите настроить логирование в триггере
    #39629046
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serg_warlockcurrent_date,
a.MON$REMOTE_ADDRESS,

не надо так делать. Обращение к mon$ ресурсоемко, при увеличении количества пользователей время обращения будет только увеличиваться, а если в эту таблицу часто вставляются записи, то с производительностью будет вообще крандец.
Для примера, в зависимости от системы, на сотне и больше пользователей время получения снимка MON$ сервером может длиться от нескольких секунд до нескольких минут.
А снимок будет делаться каждый раз, когда такой триггер сработает в новой транзакции.
serg_warlockХотя, сторонняя программа запускается с моей же машины и адрес должен быть 192.168.0.25.
не должен. как раз должен быть 127.0.0.1, что означает коннект с этой же машины, где и сервер.
...
Рейтинг: 0 / 0
Помогите настроить логирование в триггере
    #39629085
serg_warlock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,
Спасибо. попробовал на на базе с другой машины все получилось :)
...
Рейтинг: 0 / 0
Помогите настроить логирование в триггере
    #39629432
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvserg_warlockcurrent_date,
a.MON$REMOTE_ADDRESS,

не надо так делать. Обращение к mon$ ресурсоемко, при увеличении количества пользователей время обращения будет только увеличиваться, а если в эту таблицу часто вставляются записи, то с производительностью будет вообще крандец.
Для примера, в зависимости от системы, на сотне и больше пользователей время получения снимка MON$ сервером может длиться от нескольких секунд до нескольких минут.
А снимок будет делаться каждый раз, когда такой триггер сработает в новой транзакции.

Можно сделать отдельную таблицу юзеров и писать в лог только ИД, либо в on connect сохранить нужные реквизиты в Set_Context и потом уже брать их оттуда
...
Рейтинг: 0 / 0
Помогите настроить логирование в триггере
    #39629621
serg_warlock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Василий 2, в данном конкретном случае логировал справочную таблицу, которую правят редко. Да и пользователей у которых есть возможность это сделать всего 15. Так что задача пока решена. Логировать большие таблицы, с которыми работают все пока не нужно. :) Вариант с контекстными переменными мне понравился. Если наклонят логировать большие таблицы попробую его реализовать
...
Рейтинг: 0 / 0
Помогите настроить логирование в триггере
    #39630554
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvserg_warlockcurrent_date,
a.MON$REMOTE_ADDRESS,

не надо так делать. Обращение к mon$ ресурсоемко, при увеличении количества пользователей время обращения будет только увеличиваться, а если в эту таблицу часто вставляются записи, то с производительностью будет вообще крандец.


В справке для 2.5.4 есть такая штука как:

Код: plsql
1.
RDB$GET_CONTEXT ('SYSTEM', 'CLIENT_ADDRESS');


CLIENT_ADDRESS:

- Для TCPv 4 – IP адрес,
- для XNET – локальный ID процесса.
- Для остальных случаев NULL.
...
Рейтинг: 0 / 0
Помогите настроить логирование в триггере
    #39630821
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,

насколько понимаю, эти переменные заполняет клиентская либа "руками" ???

Т.е. если вдруг программа соединяется через fbclient.dll 1.x ( или аналогично старые jaybird/NetProvider ), то эти переменные останутся пустыми?
...
Рейтинг: 0 / 0
Помогите настроить логирование в триггере
    #39630866
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

MON$REMOTE_ADDRESS (он же RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')) "заполняется" сервером и никак не зависит от версии клиента. Как и MON$REMOTE_PROTOCOL. А вот REMOTE_PID, REMOTE PROCESS "заполняются" клиентом.
...
Рейтинг: 0 / 0
Помогите настроить логирование в триггере
    #39630906
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrMON$REMOTE_ADDRESS (он же RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')) "заполняется" сервером

Любопытно. А "RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')" в каком смысле "он же" ?
Паузы сравнимой со временем фиксации MON-таблицы не будет ?
...
Рейтинг: 0 / 0
Помогите настроить логирование в триггере
    #39630936
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochЛюбопытно. А "RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')" в каком смысле "он же" ?
это разные механизмы получения одной и той же информации

AriochПаузы сравнимой со временем фиксации MON-таблицы не будет ?
не будет
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите настроить логирование в триггере
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]