Здравствуйте, уважаемые!
Вопрос следующий - как работают в FB database triggers на дисконнект и завязаны ли они на MON$ATTACHMENTS? А конкретнее, хотелось бы узнать, что произойдет, если сервер по каким-либо причинам аварийно завершил работу? Вполне ведь возможен вариант, что эти триггеры сработать не смогли. И в MON$ATTACHMENTS в базе зависнут записи. Что тогда произойдет при восстановлении работы сервера и обращения к этой базе - очистятся ли "мертвые" строчки в MON$ATTACHMENTS и если да, то сработают ли при этом триггеры на дисконнект?
Прошу прощения, что смешал в кучу два понятия, просто у нас при переходе с IB на FB возникла проблема. В IB мы использовали свою табличку в базе, в которой лежали активные сессии. В силу различных причин (н-р, аварийных отключений клиентов от базы) в этой табличке периодически появлялся мусор, который чистился при подключении любого пользователя путем сравнения содержимого таблицы с содержимым TMP$ATTACHMENTS. Однако в FB такое не канает - юзер (не SYSDBA) видит только свой аттачмент и не может понять, какие из записей в нашей таблице мертвые, а какие - нет. Альтернативы я вижу две:
1. Использование database triggers. Исключаются все причины образования мусорных записей, связанные с ненормальным отключением клиента, но, видимо, остаются проблемы при ненормальном завершении работы самого сервера.
2. Вроде как в FB 2.5 мониторинговые таблицы полностью может видеть не только SYSDBA. Вот только как этого добиться описаний пока нет, да и у FB 2.5. даже беты пока нет, а сроки уже поджимают...
Database triggers в FB
Re: Database triggers в FB
1) Триггеры уровня БД с MON$-таблицами никак не связаны.
2) Триггеры на дисконнект не сработают только если сервер упал по Access Violation.
3) Данные MON$-таблиц не хранятся в базе, они генерятся динамически в момент запроса. Соотв-но, ничего в них "зависнуть" не может.
4) В 2.1.2 (RC выйдет в этом месяце) не-SYSDBA юзеры смогут видеть все аттачи от своего имени.
2) Триггеры на дисконнект не сработают только если сервер упал по Access Violation.
3) Данные MON$-таблиц не хранятся в базе, они генерятся динамически в момент запроса. Соотв-но, ничего в них "зависнуть" не может.
4) В 2.1.2 (RC выйдет в этом месяце) не-SYSDBA юзеры смогут видеть все аттачи от своего имени.
Re: Database triggers в FB
Спасибо за инфу!
Но рядовые юзеры будут видеть только свои аттачи, а чужие все равно не увидят, так что старый метод все равно работать не будет...
Т.е. единственный вариант - триггеры на дисконнект и надеяться, что сервер не упадет. Ну и видимо какой-то процесс, работающий от имени SYSDBA, для страховки.
А вот помню где-то обсуждался вариант с новой системной ролью, типа RDB$MON, все юзеры с этой ролью могли бы видеть полностью все мониторинговые таблицы, как их видит SYSDBA - этого не будет?
Но рядовые юзеры будут видеть только свои аттачи, а чужие все равно не увидят, так что старый метод все равно работать не будет...
Т.е. единственный вариант - триггеры на дисконнект и надеяться, что сервер не упадет. Ну и видимо какой-то процесс, работающий от имени SYSDBA, для страховки.
А вот помню где-то обсуждался вариант с новой системной ролью, типа RDB$MON, все юзеры с этой ролью могли бы видеть полностью все мониторинговые таблицы, как их видит SYSDBA - этого не будет?
Re: Database triggers в FB
будет только в 3.0VerLeon писал(а):А вот помню где-то обсуждался вариант с новой системной ролью, типа RDB$MON, все юзеры с этой ролью могли бы видеть полностью все мониторинговые таблицы, как их видит SYSDBA - этого не будет?