![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить скрипт вставляемой запись в БД через FIB+ ?
WhiteBarin © (2006-07-06 12:44:00)Когда пользователь вставляет новую запись или удаляет или изменяет, как получить скрипт который поступает на сервер
Андрей Пазик (2006-07-09 02:00:00) [1]Лог транзакций в FB отсутствует. Пока.
Но думаю, умудренные проктологи предложат вам решение, подкупающее своей глубиной (с) Ded
WhiteBarin (2006-07-07 14:11:00) [2]Согласен нужно всегда анализировать действия которые ты делаешь. Но и помнить о них нужно. Поэтому своевременнонужно чистить эти логи да и как правильно ты заметил выбирать правильно таблицы на которые ставить триггера слежения. Ну а так просто убойная штука, кстате только что я написал процедурку которая на основании данных в таблицах протоколирования делает скрипт. На входе имя таблицы на выходе скрипт изменений
Desdechado (2006-07-07 10:28:00) [3]> И решили мы через несколько дней реструктуризировать эту таблицу
> про работающий триггер на update уже никто не помнил
Короткая же память у вас, непозволительно короткая. И как с вами еще кто-то работает?
Во время всяких сервисных операций триггеры протоколирования можно (и обычно нужно) отключать.
PEAKTOP (2006-07-06 20:31:00) [4]Рекомендую задуматься о размере базы данных.
Мы вот как-то на одном заводе ставили ERP, и тоже наш архитектор включил в IBExperte эту опцию, когда отлаживали. А потом перед уездом забыл выключить.
А была в этой базе основная деревянная таблица справочник, которая хранила заказы со всеми спецификациями, узлами, деталями, заготовками, материалами .... в общем, 3 500 000 записей. И весила база 1,2 ГБ.
И решили мы через несколько дней реструктуризировать эту таблицу, чтобы оптимально было, чтобы база меньше весила. А про работающий триггер на update уже никто не помнил. И после оператора update ... all база стала 2,5 ГБ.
Ну, думаем, наверное - новые страницы. Делаем backup-restore. База стала 2,3 ГБ.
В общем, чуть не поседели, пока доперли откуда такой припрост базы взялся и что чистить надо. Но зато эта ситуация научила ставить логгер только на те таблицы, где это действительно надо.
это я к чему... подумай хорошенько, где действительно нужен логгер изменений, а где - "может ну его на фиг" ........
WhiteBarin (2006-07-06 15:56:00) [5]это очевидно, так как работают триггеры, и поэтому конечно же следует определить период хранения протокола, или после того как забрал протокол его подчистить или после того как прошло какое-то время его подчистить вот это уже вопрос реализации, а так спасибо
Интересно на сколько снизят производительность работы с таблицей тирггрера которые создал IBExpert?
unknown (2006-07-06 15:46:00) [6]
> WhiteBarin © (06.07.06 15:35) [12]
> Все очень прикольно решается через IBExpert
Настоятельно рекомендую трижды подумать о необходимости протоколирования-
бд будет пухнуть как на дрожжах и на производительности тоже скажется.
WhiteBarin (2006-07-06 15:35:00) [7]Все очень прикольно решается через IBExpert, уже разобрался осталось только написать процедуру SQL которая возвращает скрипт прошедших событий, очень все круто получилось, а на уровне Delphi тоже нормально получается но не так как на уровне базы данных и IBExpert
_RusLAN (2006-07-06 15:28:00) [8]> [6] _RusLAN © (06.07.06 13:56)
> [9] WhiteBarin © (06.07.06 15:12)
Всегда пожалуйста.
Но запятых и точек все равно маловато :))
Desdechado (2006-07-06 15:28:00) [9]> не ясно какая запись удалилась изменилась или добавилась;
На которую сработал триггер.
> если происходило изменение не ясно какие именно поля поменял пользователь;
Сравнивай значения old и new для полей.
WhiteBarin (2006-07-06 15:12:00) [10]:) Спасибо огромное видимо эта функция как раз мне и подходит, я только что с ней разобрался осталось вытаскивать из таблиц протокол и формировать на его основе скрипт благодарю и никакого слежение на уровне Delphi только на уровне СУБД это круто, как раз у меня возникла идея реализовывать это через триггеры на уровне СУБД а IBExpert это уже умеет круто то как благодарю
_RusLAN (2006-07-06 15:02:00) [11]> А как IBExpert делает протоколирование? Где посмотреть?
Открываете таблицу
На панели инструментов (слева) будет такой выпадающий список "Таблица"
нажимаете на него
выбираете "Подготовить таблицу к протоколированию"
выбираете какие операции и какие столбцы протоколировать
Чтобы посмотреть результат работы
меняеете какое-то поле в таблице (в той таблице и то поле которое было отмечено вами для протоколирования)
Дальше на вкладке "Протокол" (Когда открыта таблица вверху есть вкладки "Поля"..."Данные"..."Протокол") выбираете временной диапазон и получаете список всех изменений для даной таблицы:
кто, когда и какое поле изменил, какое было старое значение этого поля и какое новое.
WhiteBarin (2006-07-06 14:08:00) [12]Извеняюсь за синкаксис, с AFTER как вариант (в первую очередь его я и рассматривал).
Минусы AFTER:
- не ясно какая запись удалилась изменилась или добавилась;
- если происходило изменение не ясно какие именно поля поменял пользователь;
Если есть предложения по поводу реализации через AFTER, так же будет интересно послушать.
А как IBExpert делает протоколирование? Где посмотреть?
_RusLAN (2006-07-06 13:56:00) [13]> На клиенте например но это не стольк важно вопрос то общий
> следить за таблицей
блин, 4 раза перечитывал чтоб понять. Пользуйтесь запятыми, уважаемый.
А по сабжу то [5]Desdechado
+1
Можете посмотреть как IBExpert делает протоколирование таблиц. Может это как раз вам и надо, и ничего делать вообще не придется.
Desdechado (2006-07-06 13:02:00) [14]а не проще на важные таблицы повесить триггеры AFTER, которые будут долбить протокол изменений?
и все в одном месте, не надо собирать у пользователей.
WhiteBarin (2006-07-06 12:57:00) [15]На клиенте например но это не стольк важно вопрос то общий следить за таблицей
WhiteBarin (2006-07-06 12:56:00) [16]Не программа должна создавать скрипт, слежение за изменениями в таблице.
т.е. если кто-то вставил запись изменил или удалил должен быть сформирован файл скрипт этих изменений
Desdechado (2006-07-06 12:54:00) [17]получить где? на сервере, на клиенте, посередине?
Johnmen (2006-07-06 12:49:00) [18]Зачем?
Подглядываем за пользователем?