2

我希望有人可以帮助我解决一个非常奇怪的问题。

当用户同步他们的设备时,他们会收到此错误:

由于违反完整性,无法重新应用行操作。检查发布过滤器。[表 = 资产详细信息,操作 = 插入/更新,RowGuid = {C92038E4-18EA-EE11-4C9F-2952CDECFCC7}] HRESULT 0x80040E2F (28549)

当我们去服务器查询这一行时,它的父行(表称为 Asset)似乎是有效且正确的。当我们探索完整的过滤树(为了更好的描述)时,所有数据似乎都是正确的。

从我们在数据库中可以看到,应该发送给订阅者的数据遵守数据库中的参照完整性约束。它也服从发布过滤器。

我们是否有理由在订阅者身上遇到这个问题?我们如何解决这个问题?

此外,是否可以准确记录发送到设备的数据 - 如果不是数据,则针对 sdf 文件运行的语句以确定发生的情况?

在此先感谢您的帮助,

莫里森

4

3 回答 3

2

不确定这在技术上是否是一个答案,但它是我们遇到的问题的答案。

我们发现一位同事在我们的数据库中删除了 FK 关系,却没有告诉任何人。因此,当我们查看数据库和数据时,一切正常。

只有当我们将模式与我们的测试版本进行比较时,我们才意识到发生了什么。

因此,在这种情况下,答案是使用单独的数据库验证模式。

于 2011-02-11T08:23:26.773 回答
1

命令通常通过存储过程在订阅者处应用。当您的订阅者重新连接时运行分析器以查看正在运行的内容以及使用哪些参数。这可能会给你一个关于正在发生的事情的线索。不幸的是,我不能更具体。

于 2011-02-10T12:52:00.367 回答
0

是否与在您的约束中使用“不用于复制”条款有关。请参阅http://msdn.microsoft.com/en-us/library/ms180843.aspxhttp://msdn.microsoft.com/en-us/library/ms152529.aspx

因此,当使用 OrderHeaders 和 OrderLines 的复制时,复制可能会在 Orderheader 记录之前将 OrderLines 插入您的订阅者中,然后您就会遇到违规行为。

指定 Not For Replication 意味着当通过复制系统插入行时不会对约束进行检查,因为它们已经在发布者处进行了。

于 2011-07-28T11:32:58.583 回答