2

我希望有人能帮助我一个非常奇怪的问题。SQL Server 2005复制完整性违反SQL Server,错误号:28549

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

The row operation cannot be reapplied due to an integrity violation. Check the Publication filter. [ Table = ASSET_DETAIL,Operation = Insert/Update,RowGuid = {C92038E4-18EA-EE11-4C9F-2952CDECFCC7} ] HRESULT 0x80040E2F (28549)

当我们去到服务器,并查询该行及其母公司行(表称为资产)似乎是有效的和正确的。当我们探索完整的过滤器树(为了更好的描述),所有的数据看起来都是正确的。

从我们可以在我们的DB中看到的数据应该要去订阅服从参照完整性约束到您的数据库。它也服从发布过滤器。

是否有原因导致用户遇到此问题?我们如何解决这个问题?

另外,是否有可能准确记录发送到设备的数据 - 如果不是数据,正在针对sdf文件运行的语句以确定发生了什么?

预先感谢您的帮助,

Morrislgn

+0

我们有完全相同的问题。在一个实例中,我们能够通过移除有问题的外键来解决它,并试图通过不执行参照完整性来实现。我在这个问题上提供了一个奖励,因为关于这个问题的信息很少。最近在Microsoft connect上发布了一个类似问题,但没有解决方法:http://connect.microsoft.com/SQLServer/feedback/details/668349/sql-ce-web-sync-pull-subscription-fails-to-initialize-违反了完整性约束32位平台上的列或表的完整性约束64位但成功 – 2011-07-21 09:50:01

回答

1

命令通常通过存储过程应用的用户。当用户重新连接时查看运行情况和参数,运行分析器。这可能会让你知道发生了什么。不幸的是,我不能更具体。

+0

我们试过这个,但没有得到太多,我们是能感觉到。根据我们从设备获得的信息,我们得到了行指导和表格,但我们无法进一步追踪它。 – Morrislgn 2011-02-10 15:52:19

2

不知道这在技术上是否是答案,但它是我们遇到的问题的答案。

我们发现一位同事在我们的数据库中删除了FK关系,并且忽略向任何人通知它。所以当我们在查看数据库和数据时,一切都很好。

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

因此,这种情况下的答案是验证架构与单独的数据库。

0

它是否与约束上使用“不为复制”子句有关。请参阅http://msdn.microsoft.com/en-us/library/ms180843.aspxhttp://msdn.microsoft.com/en-us/library/ms152529.aspx

因此,当使用OrderHeaders和OrderLines的复制时,复制可能会在Orderheader记录之前将OrderLines插入到订阅服务器中,然后您会收到违规。

指定不用于复制意味着在通过复制系统插入行时,不会对约束进行检查,因为它们已在发布者处制作。