2009-03-02 2 views
0

Я работал над несколькими приложениями, которые сохраняли данные XML в базе данных. На сегодняшний день все они просто перезаписывали текущее содержимое XML с новым содержимым XML.Сохранение истории изменений в поле XML в SQL Server 2008

Я хотел бы сохранить изменения в XML в базе данных, но не перезаписывать то, что в настоящее время находится в БД.

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

Я думал о том, чтобы просто сохранить различия как фактические текстовые различия, которые не всегда работают для XML.

Я, орешки, даже для этого?

ответ

1

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

Он будет иметь только те столбцы, которые вам интересны для отслеживания истории вместе с столбцом datetime (для записи даты изменения) и, как правило, вы хотите получить некоторую информацию о пользователе (т. Е. Вытащите зарегистрированного пользователя из соединения или укажите имя пользователя в вашей вставке/обновлении).

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

Существует также это более общее решение цели, которая предлагает использовать SQL CLR для абстрагироваться от реализации уникальной таблицы аудита и триггера для каждой таблицы данных вы хотите провести аудит: http://www.sqljunkies.ddj.com/Article/4CD01686-5178-490C-A90A-5AEEF5E35915.scuk

+0

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