|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2018, 12:29 |
|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
serg_warlockcurrent_date, a.MON$REMOTE_ADDRESS, не надо так делать. Обращение к mon$ ресурсоемко, при увеличении количества пользователей время обращения будет только увеличиваться, а если в эту таблицу часто вставляются записи, то с производительностью будет вообще крандец. Для примера, в зависимости от системы, на сотне и больше пользователей время получения снимка MON$ сервером может длиться от нескольких секунд до нескольких минут. А снимок будет делаться каждый раз, когда такой триггер сработает в новой транзакции. serg_warlockХотя, сторонняя программа запускается с моей же машины и адрес должен быть 192.168.0.25. не должен. как раз должен быть 127.0.0.1, что означает коннект с этой же машины, где и сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2018, 12:59 |
|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
kdv, Спасибо. попробовал на на базе с другой машины все получилось :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2018, 13:28 |
|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
kdvserg_warlockcurrent_date, a.MON$REMOTE_ADDRESS, не надо так делать. Обращение к mon$ ресурсоемко, при увеличении количества пользователей время обращения будет только увеличиваться, а если в эту таблицу часто вставляются записи, то с производительностью будет вообще крандец. Для примера, в зависимости от системы, на сотне и больше пользователей время получения снимка MON$ сервером может длиться от нескольких секунд до нескольких минут. А снимок будет делаться каждый раз, когда такой триггер сработает в новой транзакции. Можно сделать отдельную таблицу юзеров и писать в лог только ИД, либо в on connect сохранить нужные реквизиты в Set_Context и потом уже брать их оттуда ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2018, 19:35 |
|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
Василий 2, в данном конкретном случае логировал справочную таблицу, которую правят редко. Да и пользователей у которых есть возможность это сделать всего 15. Так что задача пока решена. Логировать большие таблицы, с которыми работают все пока не нужно. :) Вариант с контекстными переменными мне понравился. Если наклонят логировать большие таблицы попробую его реализовать ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 09:16 |
|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
kdvserg_warlockcurrent_date, a.MON$REMOTE_ADDRESS, не надо так делать. Обращение к mon$ ресурсоемко, при увеличении количества пользователей время обращения будет только увеличиваться, а если в эту таблицу часто вставляются записи, то с производительностью будет вообще крандец. В справке для 2.5.4 есть такая штука как: Код: plsql 1.
CLIENT_ADDRESS: - Для TCPv 4 – IP адрес, - для XNET – локальный ID процесса. - Для остальных случаев NULL. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 03:53 |
|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
fraks, насколько понимаю, эти переменные заполняет клиентская либа "руками" ??? Т.е. если вдруг программа соединяется через fbclient.dll 1.x ( или аналогично старые jaybird/NetProvider ), то эти переменные останутся пустыми? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 14:21 |
|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
Arioch, MON$REMOTE_ADDRESS (он же RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')) "заполняется" сервером и никак не зависит от версии клиента. Как и MON$REMOTE_PROTOCOL. А вот REMOTE_PID, REMOTE PROCESS "заполняются" клиентом. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 15:07 |
|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
dimitrMON$REMOTE_ADDRESS (он же RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')) "заполняется" сервером Любопытно. А "RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')" в каком смысле "он же" ? Паузы сравнимой со временем фиксации MON-таблицы не будет ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 15:46 |
|
Помогите настроить логирование в триггере
|
|||
---|---|---|---|
#18+
AriochЛюбопытно. А "RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')" в каком смысле "он же" ? это разные механизмы получения одной и той же информации AriochПаузы сравнимой со временем фиксации MON-таблицы не будет ? не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 16:18 |
|
|
start [/forum/topic.php?fid=40&fpage=34&tid=1561157]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 529ms |
0 / 0 |