无法通过复制数据库进行更新并通过tableadapter进行更新

时间:2009-08-01 16:34:57

标签: c# sql sql-server-2005 sql-server-2008

我正在维护一个旧的应用程序。我要在两台服务器之间启动合并复制。 但之后我收到这些错误消息“不允许使用rowguidcol属性更新列。”

是否真的无法使用tableadapters进行更新?我是否必须重构此应用程序才能进行合并复制?

感谢您提供意见。

修改

我检查了自动生成的XSD文件,发现每个更新语句中的每个字段都已更新。有些列来自类型唯一标识符,即使您无法从应用程序更改这些值,语句也会如此

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

我们的testdatabase具有相同的方案,但是在sql2008上运行,看起来应用程序正在运行而没有任何更改。 (我刚刚创建了一个没有任何订阅者的合并复制)。

它变得陌生和陌生

1 个答案:

答案 0 :(得分:2)

复制向表添加触发器以捕获更改,这些触发器阻止更新复制id列(具有rowguidcol属性的列)。 Considerations for Merge Replication

  

添加uniqueidentifier列

     

合并复制使用全局   唯一标识符(GUID)列   在合并期间识别每一行   复制过程。如果发表了   table没有uniqueidentifier   具有ROWGUIDCOL属性的列   复制增加了一个唯一的索引   一。确保任何SELECT和INSERT   引用已发表的陈述   表使用列列表。如果一张桌子   不再发布和复制   添加了列,列是   删除;如果列已经   存在,它不被删除。

您将不得不编辑数据集并从表适配器的投影列表中删除复制列。