Не так давно
мне рассказали душещипательную историю
об уровне поддержки корпоративных
клиентов. За достоверность не ручаюсь,
излагаю как запомнил.
Один корпоративный
клиент, использующий ProjectMate в своей
работе, захотел добавить функцию контроля
(фактически отслеживания) хода дел,
учитываемых в PM. По простому — пользователь
изменил запись, атрибут карточки,
параметры объекта — и сведения о
состоявшемся изменении пошли к начальству.
Журналирование операций по нашему.
Обратившись
к изготовителю PM с запросом на добавление
такой функциональности, клиент был
мягко послан в поход.
Тогда клиент
обратился ко мне. И вместе мы придумали
простое решение проблемы — записывать
изменения на уровне базы данных.
В принципе, в
MS SQL есть то, что нужно – CT,
CDC. Но, по разным причинам, нам это не
подошло. То лицензия на базу «не
энтерпрайз», то журнал разбросан по
разным таблицам, сейчас уже и не вспомню
всех резонов. Помню, что решили сделать
по простому: навесить на нужные таблицы
данных ПроджектМейта триггеры и заставить
эти триггеры записывать инфу в журнал.
Подробнее
можно почитать в тут:
https://github.com/vasnake/pmate-log/blob/master/readme.pdf
А остальные
подробности и код можно взять тут:
ttps://github.com/vasnake/pmate-log
Код, собственно,
состоит из скрипта создания таблицы
журнала и скрипта генерации триггеров
по заданному списку таблиц.
Решение должно
работать практически в любой БД MS SQL и
не только с ПрожектМейтом.
original post http://vasnake.blogspot.com/2014/07/logging-projectmate.html
Комментариев нет:
Отправить комментарий