powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как лучше отслеживать изменения производимые пользователями?
16 сообщений из 16, страница 1 из 1
Как лучше отслеживать изменения производимые пользователями?
    #32587456
Рачаев Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

ADP+SQLSERVER2000

Вот есть такая задумка по контролю всех измененений вносимых пользователями в базу.
Как лучше это отслеживать?
1) средствами SQLSERVER, если такие имеются.
2) вручную добавляя в каждую изменяемую запись: текущего поьзователя, дату изменения.
3) триггерами на INSERT, UPDATE на сервере
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32587491
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне третий вариант нравиться. Вставлять записи по одной на delete,insert, по две на апдейт в рядом лежащую специальную базюку.
Может через год руки дойдут, сделаю. Шибко шибко надо :-)
Первый вариант не получится, тк средства отсутствуют. Есть средство независимых разработчиков, лумигент называется. Но своими то ручками по любому лучче.
второй вариант счас у меня работает. Полная параша, тк не лечит в случае удаления записи
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32587527
Рачаев Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и больше к 3 -му варианту склоняюсь. Только вот насколько это сложно сделать?

P.S.: А зачем ДВЕ-то на апдейт?
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32587530
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не обязательно, конечно, триггера писать - можно просто всю обработку данных черех ХП сделать - и уже в них (в ХП) в "талицу-лог" писать.

ИМХО - конечно
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32587540
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рачаев ОлегВот и больше к 3 -му варианту склоняюсь. Только вот насколько это сложно сделать?

P.S.: А зачем ДВЕ-то на апдейт?
Типа - старая + новая
Но ИМХО - новое значение можно и из "рабочей" таблицы вытащить, хотя хранит рядом и удобнее :)
Или - запись одна, но там прописываются оба значения

+
Как мне кажется, это следует делать не совсеми полями и таблицами, а только с "критическими" свойствами некоторых объектов
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32587628
Рачаев Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paramone:

Тут еще зависет от задачи: если нам требуется восстановление удаленных записей или откат на старые значения, то нужно будет сохранять все ... получиться что мы ведем детальный лог базы с возможностью восстановления( если мне не изменяет память в Оракле такое на уровне СУБД можна настроить )

Да и потом если и реализовывать механизм "восстановления", то по уровню сложности и временным затратам он наверняка превзойдет саму базу... что никому не надо

P.S.: Если нам не требуется механизм восстановления, то напрашивается такое решение:

1) Создаем в каждой протоколируемой таблице доп.поля: создатель, редактор, дата. Делаем один общий для всех типов операций для всех таблиц триггер, который будет протоколировать в табл t_log

2) Делаем таблицу t_log( log_id, table_name, user, tableRecordId, operation, date ), где
В ней-то и будем будем вести протокол операций с базой.

3) Вроде все?
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32587631
Рачаев Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
где operation={INSERT,UPDATE,DELETE}
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32587662
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если требуется откат - без аудита, то для этого есть Backup (в том числе и backup лога транзакций)

авторДелаем один общий для всех типов операций для всех таблиц триггер, который будет протоколировать в табл t_log
Это как:
1. Один триггер на все таблицы?
2. Или одинаковый триггер копируем по всем таблицам?
Если 1, то поподробнее, как это делается, и в любом случае сходить на форум по mssql и там почитать много "лестного" об универсальном подходе в создании триггеров и ХП (я не отридцаю, что это не возможно, но уж очень не рекомендуют)

автор2) Делаем таблицу t_log( log_id, table_name, user, tableRecordId , operation, date ), где
В ней-то и будем будем вести протокол операций с базой.
ИМХО:
1. А если ключ составной
2. А если оператор допустил ошибку, то нет данных о старом значении - хотя это (ИМХО) и не методами аудита делается, но иногда бывает полезно
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32587717
Рачаев Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1. А если ключ составной

Я не претендую на универсальность метода, в крайнем случае эту таблицу можно не протоколировать. В моем же случае если и есть такие таблицы, то юзеры их не правят.

автор2. Или одинаковый триггер копируем по всем таблицам?
Если 1, то поподробнее, как это делается, и в любом случае сходить на форум по mssql и там почитать много "лестного" об универсальном подходе в создании триггеров и ХП (я не отридцаю, что это не возможно, но уж очень не рекомендуют)

Я мало знаком с триггерами в msql, поэтому ничего не могу сказать, надо почитать ... Так как же быть?
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32588716
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ мало знаком с триггерами в msql, поэтому ничего не могу сказать, надо почитать ... Так как же быть?
ИМХО:
1. на каждую таблу вешать свой триггер
или
2. все действия по изменению/добавлению/удалению данных делать через ХП (как я уже говорил), а прямое изменение данных в таблицах запретить.
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32588734
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем в КАЖДОЙ протоколируемой таблице создавать новый поля - пользователь и дата?:)

Имхо - лучше протоколировать изменения по триггерам (если система написана), если только пишется - то использовать хп.
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32588829
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Можно и из рабочей.
Если несколько изменений, то запрос "А что именно поменял чел получается" сложный. Типа предудущую запись с максимальной датой, а если ее нет, то вставку кароче за..ся.
Лучше не экономить тем более что особых требований по скорости к логу нет. Мне за два года она понадобилась раз пять, но зато ПОНАДОБИЛАСЬ ТАК ПОНАДОБИЛАСЬ. Типа кто стер тыщу документов;-)
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32588834
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаем тут.
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32588882
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Резюме почле чтения тут:
Таблички с логами в специальной базюке, совпадающие по структуре с исходными+Исполнитель,Дата,ТипОперации+Триггеры на первичные таблицы( или процедуры и потом только ими)- это гуд.
Кароче, третий вариант
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32589506
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если по хорошему лог писать,то это целая история
типа таблица-запись-поле-было-стало
и куча отчетов для беглого анализа

но у меня уже два года работает ленивый вариант
с копированием целой записи
в архивную таблицу
правда я отслеживаю не изменение конкретного поля
а документа в целом
ибо все они имеют у меня состояния
из которых только некоторые позволяют вносить изменения
и я делаю копию записи только при смене состояния документа
на редактируемое

из достоинств
результат (полная и исчерпывающая информация о истории изменений)
достигается очень быстро (5-10 мин кодирования на одну таблицу + 5мин на форму просмтра эволюции)
из недостатков
существенная избыточность
и как следствие раздувание таблицы лога при групповых
операциях (недавно пришлось обрезать)

Из опыта
передостерегу от использования триггеров
при существенном размере лога транзакции на изменение
безбожно замедляются
я в конце концов сделал формирование лога асинхронными процедурами.
Также полезным будет предусмотреть удаление лога для документов
из наглухо закрытых для изменения периодов(если таковые имеются)
потому как у меня например лог используется только
для текущих разборок с пользователем (типа сам дурак)
и редко когда касается данных на пару месяцев назад.
...
Рейтинг: 0 / 0
Как лучше отслеживать изменения производимые пользователями?
    #32589540
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант для обхода проблемм с замедлением транзакций
при использовании триггеров
рекоменндую сразу использовать
две таблицы лога оперативную и архивную
из триггера писать в оперативную
а потом ее содержание сливать в архиную job-ом
а оперативную чистить.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как лучше отслеживать изменения производимые пользователями?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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