代码之家  ›  专栏  ›  技术社区  ›  nWorx

复制的数据库无法更新,无法通过TableAdapter更新

  •  0
  • nWorx  · 技术社区  · 15 年前

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

    是否真的无法再使用TableAdapter进行更新?为了进行合并复制,是否必须重构此应用程序?

    谢谢你的意见。

    编辑

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

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

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

    越来越陌生了

    1 回复  |  直到 8 年前
        1
  •  2
  •   Remus Rusanu    15 年前

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

    添加唯一标识符列

    合并复制使用全局 唯一标识符(GUID)列到 在合并期间标识每一行 复制过程。如果出版 表没有唯一标识符 具有rowguidcol属性的列 以及唯一的索引,复制增加了 一个。确保任何选择和插入 引用已发布的语句 表使用列列表。如果表是 不再发布和复制 添加了列,列为 已删除;如果列已删除 存在,未删除。

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