Вопрос
Как избежать конфликтов первичных ключей в клиент-серверных базах данных
Фон
Я синхронизирую несколько баз данных друг с другом. У меня есть одна центральная база данных SQL Server и множество клиентских баз данных SQL Server. Теперь скажем, что у меня есть таблица X в базе данных, у которой есть идентификатор первичного ключа.
В первом клиенте у нас есть следующие идентификаторы в таблице X:
X (клиент 1)
--------
1|SomeValue
2|SomeValue
3|SomeValue
4|SomeValue
а во втором клиенте у меня
X (клиент 2)
--------
1|SomeValue
2|SomeValue
3|SomeValue
4|SomeValue
Когда я синхронизирую, я хочу, чтобы клиенты только загружали свои данные, а не загружали их.
Теперь, когда я синхронизирую первый клиент с сервером, он добавит первичные ключи из (1..4). Однако, когда я синхронизируюсь со вторым клиентом, будет PRIMARY KEY CLASH. Как я могу решить эту проблему?
Я использую SQL Server 2008 R2, Sync Framework и C#.
Я уже рассматривал идею использования GUID в качестве первичного ключа, что в моем случае неприемлемо, поскольку я имею дело с устаревшей базой данных. Кроме того, идея повторного заполнения значения IDENTITY несколько подвержена ошибкам. Как я могу увеличить столбец идентификаторов без вставки значения? PS: первичные ключи установлены как IDENTITY с шагом 1.