2009-08-01 69 views
0

我正在維護一箇舊的應用程序。我想開始兩臺服務器之間的合併複製。 但事後我收到這些錯誤消息「使用rowguidcol屬性更新列是不允許的。」通過複製數據庫和通過tableadapter更新不可能更新

是否真的沒有辦法使用tableadapters進行更新?我是否必須重構此應用程序以便能夠執行合併複製?

感謝您的輸入。

編輯

我檢查自動生成的XSD文件,發現在每個updatestatement每個字段更新。一些列從類型唯一標識符,即使你不能將這些值從應用程序更改聲明是這樣說

update myTable set uniquekeycol = oldValue .... where actualPrimaryKey = value 

我們testdatabase有同樣的計劃,但在SQL2008運行,它看起來像應用程序工作沒有任何改變。 (我剛剛創建了一個沒有任何訂閱者的合併複製)。

它變得越來越陌生和陌生

回答

2

複製添加觸發器表捕捉變化和這些觸發器防止複製id列(具有ROWGUIDCOL屬性)的更新。 Considerations for Merge Replication

添加唯一標識符列的

合併複製使用全球 唯一標識符(GUID)列 在合併 複製過程標識每一行。如果發佈的 表中沒有唯一標識符 列,並且ROWGUIDCOL屬性爲 和唯一索引,則複製會添加 之一。確保任何引用發佈的 表的SELECT和INSERT 語句使用列列表。如果一個表是 不再發布,並且複製 添加了該列,則刪除該列爲 ;如果列已存在,則不會被刪除。

您將不得不編輯數據集並從表適配器的投影列表中刪除複製列。