powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / логирование sql запросов fb 2.1.3
4 сообщений из 4, страница 1 из 1
логирование sql запросов fb 2.1.3
    #39735886
evgen29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Читал про данную тему здесь на форуме и натыкаюсь только на всякие платные fbscanner и прочие ПО.
Поскольку у клиента нет возможности обновить firebird, ибо на него завязано не только моё ПО, но и чужое, я хотел сделать по другому.
На системной таблице mon$statements создаю триггер:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE OR ALTER trigger mon$statements_ai1 for mon$statements
active after insert position 0
AS
begin
  INSERT INTO logsql(TS,SQLT) values(current_timestamp,new.mon$sql_text);
end



таблицу
Код: sql
1.
2.
3.
4.
CREATE TABLE LOGSQL (
    TS    TIMESTAMP,
    SQLT  BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET UNICODE_FSS
);



с полем SQLT по типу такому же, как mon$statements.MON$SQL_TEXT

но почему-то таблица logsql остается пустой, хотя в mon$statements записи появляются.
не подскажите, возможен ли вообще такой вариант логирования sql-запросов или нет?

ps: я полез поменял для триггера и таблицы на тестовой базе тип - сделал их системными, думал, что триггер на системную таблицу может вставлять данные только в системные таблицы(?), давал права для пользователя текущего. Но записи в logsql всё-равно не появляются.
...
Рейтинг: 0 / 0
логирование sql запросов fb 2.1.3
    #39735889
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen29возможен ли вообще такой вариант логирования sql-запросов или нет?

Невозможен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
логирование sql запросов fb 2.1.3
    #39735894
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen29,

mon$ заполняются данными только когда к ним обращаются. Это "виртуальные" таблицы в памяти, отображающие состояние сервера.
Пока кто-то не сделал select from mon$, в этих таблицах ничего нет.
Поэтому никакие триггеры на них работать не будут.
Кроме того, после того, как mon$ заполнились данными, в этой транзакции они будут содержать одно и то же, независимо от уровня изолированности транзакции. И перечитать их можно только сделав к ним Select в новой транзакции.

Для логирования нужно использовать трейс или аудит, но нормально это работает только с 2.5 (а в 2.1 может сервер упасть).
...
Рейтинг: 0 / 0
логирование sql запросов fb 2.1.3
    #39735944
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvДля логирования нужно использовать трейс или аудит, но нормально это работает только с 2.5 (а в 2.1 может сервер упасть).В 2.1 нет трейса.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / логирование sql запросов fb 2.1.3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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