Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Log MsSql


Автор: Yulaw 11.8.2010, 18:33
Нужно написать приложения для логирования изменений БД(а конкретно MsSql), приведения в читабельный вид и записи в файлы разбитые по датам, но это не суть, проблема в том, что не могу придумать как же лучше всего провести чтение БД на изменение без постоянных запросов к ней.
У кого нибудь есть идеи?  

Автор: jk1 11.8.2010, 19:43
Первое что приходит в голову: повесить триггер на изменение таблиц и пусть он логгирует изменения в отдельную таблицу истории. Остается периодически читать таблицу истории и записывать её содержимое в лог.

Автор: RageSteel 12.8.2010, 03:35
Тут многое зависит от того, как организованна работа с этой базой. К примеру, если используется Hibernate, то в нём есть такой модуль, как Hibernate Envers — аннотируешь нужные классы и по ним будет полная таблица с историей.

Автор: Yulaw 12.8.2010, 09:51
Цитата(RageSteel @ 12.8.2010,  03:35)
Тут многое зависит от того, как организованна работа с этой базой. К примеру, если используется Hibernate, то в нём есть такой модуль, как Hibernate Envers — аннотируешь нужные классы и по ним будет полная таблица с историей.

Как я понял, при использование Hibernate(Пока что не было возможности с ним поработать) будут идти постоянные обращения к бд, а как раз этого я хочу избежать, еще нужно учесть, то что я не могу изменять бд, и могу работать только с репликацией, думаю вариант с тригирами самый подходящий. Спасибо за идеи. 

Автор: LSD 12.8.2010, 15:33
Цитата(Yulaw @  12.8.2010,  10:51 Найти цитируемый пост)
Как я понял, при использование Hibernate(Пока что не было возможности с ним поработать) будут идти постоянные обращения к бд

Hibernate по своей инициативе в базу не лезет и уж тем более ничего там не меняет. Максимум что он может вытащить данные и из связанных таблиц тоже.

А вообще в этом вопросе Hibernate это самое то. У него есть специальная категория в Log4j которая позволяет писать в отдельный лог все выполняемые SQL запросы и может их при этом еще и форматировать по человечески.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)