powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / RDB$GET_CONTEXT() к другому пользователю ?
7 сообщений из 32, страница 2 из 2
RDB$GET_CONTEXT() к другому пользователю ?
    #39215440
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисfraksИ еще один момент для логов коннектов - после рестора CONNECTION_ID или как его там... начинается с нуля, заново, это значение нельзя использовать первичным ключом в логе коннектов.

понятное дело. В этой таблице ПК должен быть свой. А CONNECTION_ID использовать только для связи MON$ATTACHMENTS и собственной таблицы. Поскольку CONNECTION_ID не уникален и может присоединить и старые записи, то в условии соединения добавляем уточнение по времени коннекта. См. 19053329 . Вероятность коллизий при этом падает практически до нуля. Всякие экзотические случае с подкручиванием времени на сервере конечно не рассматриваются.

Ну у меня примерно так и сделано.
Триггер на коннект записывает в лог.
Триггером на дисконнект записывает время дисконнекта в ту же самую запись где коннект, определяет ее как последнюю запись с таким же connection_id.
При просмотре лога к нему приджойниваются текущие коннекты из мониторинга и таким образом видно где активные ныне коннекты а где вследствие тех или иных причин дисконнект не записался.
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT() к другому пользователю ?
    #39215616
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисArioch,

Код: sql
1.
2.
3.
4.
5.
6.
SELECT
    *
FROM
    MON$ATTACHMENTS A
    JOIN MYTABLE T ON A.MON$ATTACHMENT_ID = T.ATTACHMENT_ID
          AND A.MON$TIMESTAMP = T.TIMESTART  




и все активные соединения со специфическими атрибутами как на ладони.

ну ты практически дословно повторил мой пост

Ariochибо сверять табличку с MON$ATTACHENTS. Но последнее - ничуть не хуже чем просто обращение к MON$CONTEXT_VARIABLES.

Понимаеш, да? ты только что меня ругал за обращение к мониторинговым таблицам - и тепер сам же предлагаешь к ним обращаться. Ну как бы или трусы - или крестик.

Избавиться от обращения к мониторингу вообще можно только отдельной таблице и ON DISCONNECT триггером, как я и псал с самого начала, чем тебя удивил
Симонов ДенисПро самоочищающиеся таблицы не понял. Нафига? Чем GTT не устраивают?

А если же всё же выбрать обращаться к мониторинговым таблицам, то нафига мне костыли с MON$ATTACHMENTS если я нужные мне данные напрямую возьму из MON$CONTEXT_VARIABLES ?

Ну разве что проще в DBGrid запихнтуть без разворота переменных в "шаxматку"
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT() к другому пользователю ?
    #39215628
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидСообщений типа 'can not transliterate блаблабла' не видно.

А uх и не может быть, NONE и в Aфрике NONE


Таблоиддля линуха пробовал с -ch utf8 и -ch koi8r -- результат одинаковый

в смысле он под KOI8-кодировкой соединения умудрился греческие буквы вставить??? O_O

...а в целом если повторят ьв точности то под линуксом надо тоже аналог chcp делать.
Сейчас уже точно не помню как, возможно хватит
Код: plaintext
export LC_ALL=... 
а м.б. и другие LC_* переменные.

Впрочем, не важно. Ожидаемый результат получен: NONE - это просто байты под видом строки. Для хранения вне-ASCII текстов надо или гарантировать идентичность клиентов/подключения, или MIME Encapsulation наворачивать.
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT() к другому пользователю ?
    #39215638
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

во первых я не знал для чего ты это хочешь. Для целей посмотреть кто в базе и грохнуть негодяя мониторинговые таблицы самое то.
В моём решении нет бессмысленных контекстных переменных. Таблицу эту чистить совсем не обязательно. Ну отвалился коннект да и фиг с ним. Всё равно в этом запросе мёртвые коннекты выведены не будут. Зато потом можно посмотреть кто и когда подключался.
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT() к другому пользователю ?
    #39215647
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидfraksналичие триггера на дисконнект не гарантирует что будет корректно зафиксирован обрыв.
Например упал сервер.... или пришёл ДБА и ввёл: delete from mon$attachments - тоже ничего не запишется

Да действительно, забыл про это. Тогда тем более, так ещё менее надежно, чем переменными.
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT() к другому пользователю ?
    #39215656
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyЕсли нечто требует длительного хранения

У меня - не требует, мне может понадобиться информация о ТЕКУЩИХ подключениия, "кто здесь?" и "зачем ты здесь?", потому и смотрю на контeкстные переменные USER_SESSION, исчезающие вместе с самими соединениями

Информация о подключениях и действиях, которые были вчера, хранится в отдельном логе "от создания мираБД"
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT() к другому пользователю ?
    #39215658
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВероятность коллизий при этом падает практически до нуля

А можно свести к гарантированному нулю, записав ПК в контекстную переменную
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / RDB$GET_CONTEXT() к другому пользователю ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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