質問
クライアント/サーバー データベースで主キーの競合を回避するにはどうすればよいですか
バックグラウンド
多数のデータベースを相互に同期しています。1 つの中央 SQL Server データベースと多数のクライアント SQL Server データベースがあります。ここで、データベースに主キー ID を持つテーブル X があるとします。
最初のクライアントでは、テーブル X に次の ID があります。
X (クライアント 1)
--------
1|SomeValue
2|SomeValue
3|SomeValue
4|SomeValue
そして私が持っている2番目のクライアントで
X (クライアント 2)
--------
1|SomeValue
2|SomeValue
3|SomeValue
4|SomeValue
同期するとき、クライアントはデータをアップロードするだけで、ダウンロードしないようにします。
最初のクライアントをサーバーと同期すると、(1 .. 4) から主キーが追加されます。ただし、2 番目のクライアントと同期すると、PRIMARY KEY CLASH が発生します。どうすればこの問題を解決できますか?
SQL Server 2008 R2、同期フレームワーク、および C# を使用しています。
レガシ データベースを扱っているため、GUID を主キーとして使用するという考えは既に検討しましたが、これは私の場合には実行できません。また、多少エラーが発生しやすい IDENTITY 値を再シードするという考え方。値を挿入せずに ID 列をインクリメントするにはどうすればよいですか? PS: 主キーは、1 ずつ増加する IDENTITY に設定されています。