|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Где хранятся контекстные переменные? Можно ли в принципе к ним сделать доступ как к таблицам мониторинга: если текущее соединение от админа БД, то он могу бы читать переменные от любого соединения, не только своего. Т.е. ввести вариант функции Код: plaintext
Можно, конечно, сделать табличку и чистить ее триггерами ON DISCONNECT ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 14:58 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Arioch, MON$CONTEXT_VARIABLES ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 15:02 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
hvlad, тьфу, протупил, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 15:03 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Странно, что у этих функций и таблички чарсет NONE, хотя и создана БД и подключение к ней Win1215... Всё же таки со строками работаем... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 15:12 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
WIN1251 конечно же Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 15:13 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
AriochСтранно, что у этих функций и таблички чарсет NONE, хотя и создана БД и подключение к ней Win1215...А еще странно, что ФБ позволяет (якобы) завести переменную с unicode-именем длинной 80 символов, но на самом деле это не так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
Если строка ' абвгдеёжзийклмнорпстуфхцчшщъыьэюятраляляля ' не может быть запихана в mon$context_var, то зачем возвращать ноль ? PS. LI-V3.0.0.32474 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 15:46 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Таблоид, а rdb$Get_context её обрaтно считает ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 16:56 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Таблоид, Попробуй, пожалуйста, в два соединения $ /opt/fb30ss/bin/isql e30 -ch utf8 и с другой кодировкой, КОИ8-Р или например $ /opt/fb30ss/bin/isql e30 -ch WIN1251 потом в одном соединении создаешь переменную с кирриллическим именем или значением, а в другом - пытаешься считать через таблицу и через rdb$GET_context скорее всего, тоже будут непонятки PS. С одной стороны, эти контекстные переменные, вероятно, атавизм до-мониторных времён 2.0... С другой стороны, при отсутсвии стандартной их заменяющей таблицы самоочищающейся на триггерах - удобно всё-таки. Хотя и придетс все строчки если что в MIME-encapsulation кодировать ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 17:01 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Arioch, ты эта давай таблицы мониторинга с контекстными переменными не мешай. Это разные вещи, и предназначены они для разных целей. Пересечения могут быть только в пространстве SYSTEM. Про самоочищающиеся таблицы не понял. Нафига? Чем GTT не устраивают? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 17:05 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Симонов Денисты эта давай таблицы мониторинга с контекстными переменными не мешай. Это ты не мне, это ты Владу внушай - 19052260 Симонов ДенисЧем GTT не устраивают? тем что вопрос изначально Ariochчитать переменные от любого соединения, не только своего. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 17:17 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Arioch, я тебе ещё раз говорю. Таблицы мониторинга не предназначены для чтения контекстных переменных. От слова совсем. То что в них можно посмотреть текущие значения, так это скорее для целей отладки. Да и сами таблицы мониторинга только для администрирования. При попытке использовать их как нибудь ещё можно больно получить шваброй. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 17:28 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Симонов Денис, Отлчино! Ну раз у тебя есть советы лучше, чем у Влада, то ответь, пожалуйста, на вопрос из ПЕРВОГО поста: подскажи, как мне из соединения №1 прочитать переменную, установленную соединением №2. Решение Влада плохое и неправильное. Я понял. Подскажи правильное и хорошее. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 17:31 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Симонов Денистолько для администрирования. и таки да, этот вопрос возник именно в целях "посмотреть админу, кто сейчас пасется в БД", причем "кто" в несколько более широком смысле чем "Вася из 112-й комнаты" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 17:34 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Arioch, ответь на главный вопрос. Зачем? Влад только сказал, что значения контекстных переменных всех сессий можно найти в таблице мониторинга MON$CONTEXT_VARIABLES. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 17:38 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Ariochи таки да, этот вопрос возник именно в целях "посмотреть админу, кто сейчас пасется в БД", причем "кто" в несколько более широком смысле чем "Вася из 112-й комнаты" А ну в таком понимании ещё ладно. Хотя контекстные переменные для этого не очень подходят. Ибо их количество ограничено ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 17:39 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
AriochМожно, конечно, сделать табличку и чистить ее триггерами ON DISCONNECT для того что ты хочешь можно и не чистить. Заодно история коннектов будет ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 17:49 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Симонов Денисдля того что ты хочешь можно и не чистить ну тогда там будут оставаться призраки - соединения, которые аварийно отвалились. Симонов ДенисЗаодно история коннектов будет Вообще-то она там и так есть - просто неудобно отлавливать в большом общем логе конкретные события. А для отдельной спец-таблички, чтобы её не чистить, нужно придумать как отличать актуальные соединения от прошлых. И тут два варианта - либо таки триггер ON DISCONNECT, либо сверять табличку с MON$ATTACHENTS. Но последнее - ничуть не хуже чем просто обращение к MON$CONTEXT_VARIABLES. Симонов ДенисИбо их количество ограничено Количество - или суммарная длинна? В принципе, ожидаемо. Но в c:\Program Files\Firebird\Firebird_2_5\doc\sql.extensions\README.context_variables2.txt поиск по "limit' и "restrict" ничего не находит. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 18:11 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Симонов ДенисИбо их количество ограничено И с другой стороны, это ограничение - на соединение, или на процес сервера ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 18:13 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Arioch, Код: sql 1. 2. 3. 4. 5. 6.
и все активные соединения со специфическими атрибутами как на ладони. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 18:29 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Arioch$ /opt/fb30ss/bin/isql e30 -ch utf8 и с другой кодировкой, КОИ8-Р или например $ /opt/fb30ss/bin/isql e30 -ch WIN1251 потом в одном соединении создаешь переменную с кирриллическим именем или значением, а в другом - пытаешься считать через таблицу и через rdb$GET_context скорее всего, тоже будут непонятки см аттач (для линуха пробовал с -ch utf8 и -ch koi8r -- результат одинаковый). Сообщений типа 'can not transliterate блаблабла' не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 18:41 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Симонов ДенисВлад только сказал, что значения контекстных переменных всех сессий можно найти в таблице мониторинга MON$CONTEXT_VARIABLES.Именно так ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 18:57 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
AriochА для отдельной спец-таблички, чтобы её не чистить, нужно придумать как отличать актуальные соединения от прошлых. И тут два варианта - либо таки триггер ON DISCONNECT, либо сверять табличку с MON$ATTACHENTS. Но последнее - ничуть не хуже чем просто обращение к MON$CONTEXT_VARIABLES. А лучше и то и то. Ибо, наличие триггера на дисконнект не гарантирует что будет корректно зафиксирован обрыв. Например упал сервер. Да, нечасто, но это не исключено. Кроме того, прикольный эффект - бэкапишь базу при наличии коннектов, ресторишь в сторонку, заглядываешь - а в ней в логе коннекты-призраки. Дисконнектов на момент бэкапа еще не было, а после рестора понятно что их уже нет. И еще один момент для логов коннектов - после рестора CONNECTION_ID или как его там... начинается с нуля, заново, это значение нельзя использовать первичным ключом в логе коннектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 05:33 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
fraksналичие триггера на дисконнект не гарантирует что будет корректно зафиксирован обрыв. Например упал сервер.... или пришёл ДБА и ввёл: delete from mon$attachments - тоже ничего не запишется ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 08:11 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
Если нечто требует длительного хранения, то почему не записать это нечто в обычную таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 10:52 |
|
RDB$GET_CONTEXT() к другому пользователю ?
|
|||
---|---|---|---|
#18+
fraksИ еще один момент для логов коннектов - после рестора CONNECTION_ID или как его там... начинается с нуля, заново, это значение нельзя использовать первичным ключом в логе коннектов. понятное дело. В этой таблице ПК должен быть свой. А CONNECTION_ID использовать только для связи MON$ATTACHMENTS и собственной таблицы. Поскольку CONNECTION_ID не уникален и может присоединить и старые записи, то в условии соединения добавляем уточнение по времени коннекта. См. 19053329 . Вероятность коллизий при этом падает практически до нуля. Всякие экзотические случае с подкручиванием времени на сервере конечно не рассматриваются. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 11:00 |
|
|
start [/forum/topic.php?fid=40&msg=39214892&tid=1562228]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 280ms |
total: | 424ms |
0 / 0 |