Отслеживание изменений SQL Server 2008

Мы хотим использовать отслеживание изменений для реализации двусторонней синхронизации между экземпляром SQL Server 2008 Enterprise/Standard и экземпляром Express 2008.

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

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

Есть ли способ отключить отслеживание изменений для каждого оператора или транзакции?

РЕДАКТИРОВАТЬ: я обнаружил команду WITH CHANGE_TRACKING_CONTEXT, поэтому я мог бы использовать ее, чтобы указать, когда изменения выполняются кодом синхронизации, чтобы сам код синхронизации не подбирал их и не использовал.


person Matt    schedule 28.01.2010    source источник


Ответы (1)


Отслеживание изменений на самом деле не предназначено для двунаправленной репликации. Вы должны придумать какой-то способ определить экземпляр, в котором действительно было сделано изменение, тогда ваш код «репликации» должен быть в состоянии гарантировать, что измененные строки на реплицированном сервере не будут снова возвращены на исходный сервер.

person Aaron Bertrand    schedule 28.01.2010
comment
На самом деле мы использовали отслеживание изменений и просто добавили в процесс синхронизации другой контекст, чтобы мы могли сказать, какие изменения являются изменениями синхронизации или исходными изменениями. До сих пор это работало довольно хорошо. - person Matt; 05.02.2010