Распределенная синхронизация rowverison после восстановления исходной базы данных - PullRequest
0 голосов
/ 11 июля 2020

Я использую SqlServer RowVersion / TimeStamp для обновления распределенного набора часов с текущим списком сотрудников. Здесь используется схема, аналогичная https://www.mssqltips.com/sqlservertip/4545/synchronizing-sql-server-data-using-rowversion/

. Я обнаружил, что этот метод имеет фатальный недостаток. Недавно нам пришлось восстанавливать исходную базу данных. У часов теперь есть номера версий строк, которые выше, чем в исходной базе данных. В частности, некоторые изменения, внесенные после восстановления для сотрудников в исходной базе данных, теперь имеют более низкие версии строк, чем их эквиваленты для часов (они заблокированы). загрузить данные.

Однако, если были задействованы большие объемы (скажем, 100 млн строк). Кто-нибудь знает о более совершенном протоколе?

Обратите внимание, что простое прикосновение к строкам сотрудников в исходной базе данных не решение. Некоторые строки все еще могут быть обновлены с помощью RowVersions, которые меньше, чем версии временных часов.

Я думаю, что одна из возможностей - отметить значение @@ DBTS исходной базы данных сразу после восстановления и уведомить таймер для очистки любого строки с более высокой версией RowVersion.

...