Как мне регистрировать каждое изменение данных, которое было сделано в SQL Server? - PullRequest
3 голосов
/ 29 июня 2011

У меня есть страница профиля (менее 10 000 пользователей), и мне нужно отслеживать все изменения и обновления, сделанные пользователями в приложении.Независимо от того, обновляет ли пользователь изображение профиля или добавляет дополнительное место в поле «комментарии», мне нужно сохранять предыдущие данные.
Короче: Мне нужно хранить все .

Существует ли какое-либо программное обеспечение для отслеживания истории и изменений в sql-сервере или мне нужно реализовать его самостоятельно?

Если мне нужно реализовать это самостоятельно, я могу придумать три способа сделать это:

  1. Я храню все в одной таблице, но добавляю ключ столбец, который указывает, какая строка активна, а какая старая.

  2. Я добавляю новую таблицу с именем history , где я храню имя столбца, в котором было изменение, когда оно было изменено и какие были старые данные.

  3. Я добавляю таблицу истории для каждой таблицы в базе данных.Он выглядит одинаково, но отслеживает только историю каждой таблицы.

У кого-нибудь была подобная проблема и как вы ее решили?

Это было построено с использованием MVC 4, и это обычный веб-сайт.

РЕДАКТИРОВАТЬ
В основном меня интересуют существующие решения / программное обеспечение, но если их нет, я бы сделал это сам.
Кто-нибудь использовал Сравнение данных SQL ?

Ответы [ 4 ]

3 голосов
/ 29 июня 2011

Где я работал в последний раз, все должно было быть полностью зарегистрировано.(работа с государственными организациями).Мы никогда не обновляли и не удаляли данные.

Что бы вы сделали, у вас есть дата начала и дата окончания в каждой строке.Для обновления вы должны обновить старые данные, чтобы иметь конечную дату, а затем вставить новую строку в таблицу.Чтобы удалить, вы должны поставить конечную дату в строку с нулевой конечной датой.У нас также был столбец «обновлено», чтобы добавить идентификатор пользователя

1 голос
/ 13 марта 2019

Microsoft предлагает Отслеживание изменений и Изменение сбора данных на некоторое время.Технически они позволяют отслеживать всех ваших изменений в базе данных, что соответствует вашим целям.Просто отметьте, что CT доступен в большинстве версий, тогда как CDC раньше был доступен только в Enterprise до SQL Server 2016, где они делали его доступным и для Standard.если вы используете SQL Server, то он уже встроен в ваше программное обеспечение.

1 голос
/ 29 июня 2011

Я использовал третий подход, чтобы сделать это, но не создал таблицу истории для всех таблиц моей БД, но таблицы истории для наиболее важных таблиц. Для этого вы можете использовать triggers, создайте trigger для Update. Вы можете узнать больше о триггерах здесь и здесь

0 голосов
/ 23 июля 2011

рассматривали ли вы включение полного ведения журнала транзакций в вашей базе данных, а затем использовать некоторые инструменты чтения журнала для отслеживания изменений данных. ApexSQL Log , безусловно, является лучшим считывателем журналов на рынке, но есть и другие решения.SQL Log Rescue от Red Gate бесплатен, но только для SQL Server 2000.

При таком подходе вам не нужно вносить какие-либо другие изменения в вашу базу данных или в ваше приложение, поскольку каждая транзакция автоматически регистрируется, когда база данных находится врежим полного восстановления.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...