2

2つのSQLServer2005データベースがあります-ParentDBChildDB、同期フレームワーク2.1を使用してそれらを同期したいのです
ParentDBが、サーバー上にChildDBあり、クライアントm/c上にあります。には多くのテーブルがありますが、ParentDB上のテーブルはほとんどありませChildDBん。たとえば、主キーが自動インクリメントに設定されているCustomer両方のデータベース間でテーブルが共通でありId (column)、このテーブルを同期したい場合は、次のmsdnのに示すアプローチを使用しています。このアプローチは、サーバーからダウンロードするかサーバーにアップロードするだけでない限り、機能しました。

シナリオを考えてみましょう:
1。サーバーテーブルにId = 52の行があります
2.両方のデータベースが同期されて
います3.これで、Id=53のテーブルに行が挿入さParentDBれます 4.同時に別の行がに挿入されますId = 53のテーブル(両方のテーブルに自動インクリメントがあるため) これで、両方のテーブルを同期すると、同期の方向に応じて、2つの行のいずれかがオーバーライドされます。 私が欲しいのはそれが調整され、両方の行が保持されることです、 Customer
ChildDBCustomer

Id

このような競合を解決するにはどうすればよいですか。可能であれば、擬似コードを提供してください。
PS:外部キー制約を考慮すると、シナリオはより複雑になると思います。
事前にThnx

4

1 に答える 1

2

同期環境でPKとしてID列を使用する(または同期フレームワークを使用しない)ことはお勧めしません(すでにわかっているのと同じ理由で、分散環境に適切な主キーを選択するを参照してください)。

スキーマを変更できる場合は、別のPK(Guid、またはInt + ClientId)を使用することをお勧めします

于 2012-07-16T10:17:52.273 に答える