Есть ли способ заставить репликацию, которая реплицирует только вставленные и обновленные данные? - PullRequest
1 голос
/ 22 февраля 2010

Я хочу иметь версию моей базы данных, которая содержит все данные от первого до настоящего времени. Если я использую репликацию сервера SQL, могу ли я заставить это игнорировать операцию удаления для репликации?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2010

Я не знаю о такой функции.

И я был бы удивлен, если бы он существовал из коробки. Что если вместо UPDATE сделать DELETE и INSERT? Ваша целевая база данных не сможет обработать такое изменение, потому что она не удалит строку с некоторым уникальным идентификатором (значением столбца) XXX, а затем попытается вставить новый с этим идентификатором, в результате чего unique key violation.

EDIT-1: Если вам нужна рабочая база данных only-recent и база данных whole для аудита, то, возможно, вам следует попробовать другое решение:

  1. Логическое удаление и просмотр : вы изменяете логику DELETE (либо путем изменения команды DELETE, либо с помощью триггера INSERT OF), чтобы пометить только строки как удаленные. Затем вы создаете представление, которое в основном оборачивает вашу таблицу, но фильтрует только те, которые не удалены. Вместо этого запустите все ваши запросы SELECT / INSERT / UPDATE для этого представления. В конце также в вашем текущем решении вы помечаете «удаленные» записи как удаленные как-то, верно?
  2. Аудит таблиц : сохраняйте свою историю также в основной базе данных, но в таблицах AUDIT (теневые). Опять же, вы можете сделать это с помощью триггеров AFTER практически без вмешательства.
1 голос
/ 22 февраля 2010

Не обычный сценарий, посмотрите, может ли это помочь: http://www.eggheadcafe.com/software/aspnet/35648651/disable-delete-on-transac.aspx

...