我正在维护一个旧的应用程序。我要在两台服务器之间启动合并复制。 但之后我收到这些错误消息“不允许使用rowguidcol属性更新列。”
是否真的无法使用tableadapters进行更新?我是否必须重构此应用程序才能进行合并复制?
感谢您提供意见。
修改
我检查了自动生成的XSD文件,发现每个更新语句中的每个字段都已更新。有些列来自类型唯一标识符,即使您无法从应用程序更改这些值,语句也会如此
update myTable set uniquekeycol = oldValue .... where actualPrimaryKey = value
我们的testdatabase具有相同的方案,但是在sql2008上运行,看起来应用程序正在运行而没有任何更改。 (我刚刚创建了一个没有任何订阅者的合并复制)。
它变得陌生和陌生
答案 0 :(得分:2)
复制向表添加触发器以捕获更改,这些触发器阻止更新复制id列(具有rowguidcol属性的列)。 Considerations for Merge Replication:
添加uniqueidentifier列
合并复制使用全局 唯一标识符(GUID)列 在合并期间识别每一行 复制过程。如果发表了 table没有uniqueidentifier 具有ROWGUIDCOL属性的列 复制增加了一个唯一的索引 一。确保任何SELECT和INSERT 引用已发表的陈述 表使用列列表。如果一张桌子 不再发布和复制 添加了列,列是 删除;如果列已经 存在,它不被删除。
您将不得不编辑数据集并从表适配器的投影列表中删除复制列。