Синхронизация SQL Server 2008 - Как повторно вставить конфликтующие строки pk с новым первичным ключом

StackOverflow https://stackoverflow.com/questions/1802575

Вопрос

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

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

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

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

Спасибо

Это было полезно?

Решение 2

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

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top