【问题标题】:No Updates possible with replicated database and updating via tableadapter无法使用复制的数据库进行更新并通过 tableadapter 进行更新
【发布时间】:2009-08-01 16:34:57
【问题描述】:

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

真的没有办法再使用 tableadapter 进行更新了吗?我是否必须重构此应用程序才能进行合并复制?

感谢您的意见。

编辑

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

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

我们的测试数据库具有相同的方案,但在 sql2008 上运行,看起来应用程序在没有任何更改的情况下工作。 (我刚刚创建了一个没有任何订阅者的合并复制)。

越来越陌生

【问题讨论】:

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


    【解决方案1】:

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

    添加唯一标识符列

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2018-04-04
      • 2012-12-31
      • 1970-01-01
      • 2016-03-19
      相关资源
      最近更新 更多