2009-08-01 70 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 语句使用列列表。如果一个表是 不再发布,并且复制 添加了该列,则删除该列为 ;如果列已存在,则不会被删除。

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