Вести журнал изменений данных пользователем в базе

  • Автор темы demav
  • 2246
  • Обновлено
  • 19, Nov 2010
  • #1
Есть задача: фиксировать кто, когда и что поменял в системе.

Но что важно - с возможностью отката изменений. СУБД: MS SQL Server 2008 R2 Кто какие инструменты или подходы применяет? Я сам делал журнал изменений в таблицах на триггерах.

Но а) пока не делал откат (ведь данных много и они подчиненные) б) может уже появились новые технологии в 2008R2?

demav


Рег
20 Nov, 2008

Тем
4

Постов
29

Баллов
69
  • 09, Dec 2010
  • #2
Сам себе и отвечу. Сделал так.

Каждое изменение сохраняю триггером в одну таблицу.

Запись хранится в XML: SELECT * FROM inserted FOR XML AUTO, TYPE, ELEMENTS В программе просмотра журнала уже анализирую XML и сравниваю что поменялось.

Откат изменений еще не сделал, но полагаю, должно всё получится. Единственное - база вырастет нереально.

Может в другой базе хранить?
 

demav


Рег
20 Nov, 2008

Тем
4

Постов
29

Баллов
69
  • 18, Jan 2011
  • #3
Создай таблицу атрибутов дай каждому ID И в лог пиши значения атрибутов. Если надо откатить бери значения старые на определенную дату
 

sersin


Рег
26 Feb, 2008

Тем
0

Постов
2

Баллов
2
  • 07, Jun 2011
  • #4
ИМХО, выгоднее хранить "старые" значения записей, а не скрипты которыми записи были изменены.
 

Aristarh Dark


Рег
07 Feb, 2009

Тем
0

Постов
1

Баллов
1
  • 24, Oct 2012
  • #5
Можно базу отдельную и не делать, а очень старые данные логов удалять
demav, post: 726400:
Есть задача: фиксировать кто, когда и что поменял в системе. Но что важно - с возможностью отката изменений.

СУБД: MS SQL Server 2008 R2

Кто какие инструменты или подходы применяет?

Я сам делал журнал изменений в таблицах на триггерах.

Но а) пока не делал откат (ведь данных много и они подчиненные) б) может уже появились новые технологии в 2008R2?
К сожалению, все не так просто получается в реальной жизни.

Т.к. объект реальной жизни (у нас ведь объекты!) описывается более чем в 1 таблице (а бывает и в 5, и в 10, не всегда очеведно как он связаны), то , потратив некоторое время можно понять кто из пользователей что натворил.

Но исправить, или вернуть "как было" практически никогда не возможно.

Пишу это по опыту многолетней эксплуатации КИС - 200 таблиц, 30 млн записей, и .т.д. пользователй 100-150
moldovanin, post: 726404:
Я бы еще и базу отдельную для лога сделал бы...а то размер возрастет очень быстро.
Можно и так. Но проблемы с работой с несколькими базами будут. Я бы не делал сейчас, когда памяти много, она дешевая, диски быстрые
 

maxim220


Рег
17 Jun, 2006

Тем
0

Постов
28

Баллов
28
  • 07, Nov 2014
  • #6
maxim220, post: 726405:
Можно базу отдельную и не делать, а очень старые данные логов удалять

К сожалению, все не так просто получается в реальной жизни.

Т.к. объект реальной жизни (у нас ведь объекты!) описывается более чем в 1 таблице (а бывает и в 5, и в 10, не всегда очеведно как он связаны), то , потратив некоторое время можно понять кто из пользователей что натворил.

Но исправить, или вернуть "как было" практически никогда не возможно.

Пишу это по опыту многолетней эксплуатации КИС - 200 таблиц, 30 млн записей, и .т.д. пользователй 100-150

Можно и так. Но проблемы с работой с несколькими базами будут. Я бы не делал сейчас, когда памяти много, она дешевая, диски быстрые





Good to know.

Agreed! Sometimes users sucks the correct data.

**"Supporting them a lot are kindly HUGE TIME to spend."**

I'm doing to have data validations before them really put/post into DB.

And another way is to have them to make sure for the data before post and make sure your app/system with no bugs impact to data/DB.

When users do some mistakes, then show them for the log files not recording in DB and have them a punishment and reward $$$ to you for helping them updating the data.

** Prepare for much better documentations also for the app/systems.

Let users learn this a lot before do their job.
 

sikancil


Рег
20 Oct, 2011

Тем
2

Постов
13

Баллов
33
  • 07, Apr 2015
  • #7
Я бы вел лог только критичных действий. Потому что использовать триггеры на все таблицы по трем действиям - круто замедляет сервер. Особенно когда таблиц очень много.
 

SMA1971


Рег
20 Oct, 2007

Тем
1

Постов
6

Баллов
16
Тем
49554
Комментарии
57426
Опыт
552966

Интересно