我有一个访问 SQL Server 后端的 MS Access 前端数据库。当不复制 SQL Server 数据库时,这(据我们所知)可以完美运行。一旦我们引入了复制(使用合并复制从作为发布者的适当服务器上的 SQL Server Standard 到作为订阅者的笔记本电脑上的 SQL Server Express),我们开始出现我无法解释的奇怪的数据库损坏。
发生的情况是我们有针对数据库中多个表运行的 UPDATE 查询,并且我们还有 Access 本身也对多个表执行 CRUD 操作(这种损坏不仅限于一个表)。我们看到的结果是随机(大约十分之一的操作)更新了我们想要更新的行以外的一行,这覆盖了我们不想覆盖的数据。
设置后,复制会作为拉式合并在笔记本电脑上按需运行,无论是否执行复制,都会发生损坏。它只需要启用。未启用复制时似乎没有发生损坏。
我在这里并不是在指责微软有任何过错——这完全有可能是我忘记勾选某些方框以防止这种情况发生。我只是不确定我需要寻找什么。
编辑:我所说的腐败是这样的:假设我有行:
ID | FirstName | LastName
--------------------------
1 | John | Smith
2 | Emma | Citizen
3 | Bob | May
然后我按照以下方式运行:
UPDATE Table SET FirstName = "Test" WHERE ID = 1
在那之后我得到了这个:
ID | FirstName | LastName
--------------------------
1 | Test | Smith
2 | Test | Citizen
3 | Bob | May
处理复制的任何系统表中都没有错误消息。架构中的唯一变化是,当启用复制时,它会创建 rowguid 列。