0

有人能指出我正確的方向來處理使用Sync Framework的c#.net中的PK衝突錯誤。SQL Server 2008同步 - 如何用新主鍵重新插入衝突的pk行

我試圖在sql server 2008和本地數據緩存數據庫(.sdf)之間進行同步,並希望保留在服務器和客戶端都有衝突的行,並且不允許服務器或客戶端獲勝?

當我向具有相同PK ID的服務器和客戶端插入新行時,出現pk衝突錯誤。

任何建議將不勝感激。

感謝

+0

你有多接近工作解決方案?您是否考慮過使用Microsoft Sync Framework?這裏有一個很好的衝突解決系統。 – u07ch 2009-11-26 10:17:25

+0

但是對於PK衝突(ClientInsertServerInsert),我使用的是同步框架,沒有指定將兩行都接受到兩個表中的選項(據我所知)。 – Belliez 2009-11-26 10:24:03

+0

當您發生雙面衝突時,您需要編寫對帳記錄;或用強制改寫密鑰 – u07ch 2009-11-26 18:18:04

回答

0

這是通過使用PK的GUID而不是自動遞增int來解決的。

這可以保證服務器或任何客戶端插入的每一行都是唯一的,並且工作得很好。

有一些缺點,如額外的存儲空間和搜索等所花費的時間,但這是我願意忍受的(我會過濾客戶端獲取的數據,這將有助於提高性能)。

感謝大家的幫助。

0

對於這類問題,總的原則是對自然鍵的列。這個想法是,主鍵唯一標識表中的一行,而自然鍵唯一標識該行描述的對象。如果發生衝突,請讓服務器獲勝並在客戶端插入新行。新的PK將發佈,但自然鑰匙保持不變。稍後,通過按自然鍵進行排序很容易找到這些行。

相關問題