SQL Server 2008 Sync - Как повторно вставить конфликтующие строки ПК с новым первичным ключом - PullRequest
0 голосов
/ 26 ноября 2009

Может кто-нибудь указать мне правильное направление для обработки ошибки конфликта PK в c # .net с использованием Sync Framework.

Я пытаюсь выполнить синхронизацию между SQL Server 2008 и локальной базой данных кэша данных (.sdf) и хотел бы сохранить ОБА строки, которые конфликтуют как на сервере, так и на клиенте, и НЕ позволяют серверу или клиенту победить?

Я получаю сообщение об ошибке pk, когда вставляю новую строку в сервер и клиент с одинаковым идентификатором PK.

Любые предложения будут благодарны.

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 ноября 2009

Это решается путем использования GUID для PK вместо автоматического увеличения int.

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

Есть некоторые недостатки, такие как дополнительное пространство для хранения и время, необходимое для поиска и т. Д., Но я хочу с этим смириться (и я буду фильтровать данные, которые получает клиент, что поможет повысить производительность).

Спасибо всем за помощь.

0 голосов
/ 26 ноября 2009

Общим принципом для этого типа проблемы является наличие столбца для натурального ключа. Идея состоит в том, что первичный ключ уникально идентифицирует строку в таблице, в то время как естественный ключ уникально идентифицирует объект, который описывает строка. В случае конфликта, пусть сервер победит и вставит новую строку на стороне клиента. Новый PK будет выпущен, но естественный ключ останется прежним. Позже эти строки легко найти, упорядочив по натуральному ключу.

...