我有一个合并复制,我担心元数据的清理可能还不够。我有 60 天的保留期,我可以看到元数据清理作业确实删除了 msmege_genhistory 中较旧的行,但仅适用于在 pubid 中具有正确 guid 的行。大多数行,大约 160 万行,在 pubid 中的值为 NULL,我不明白为什么。有人知道为什么有这么多空值吗?
我有一个合并复制,我担心元数据的清理可能还不够。我有 60 天的保留期,我可以看到元数据清理作业确实删除了 msmege_genhistory 中较旧的行,但仅适用于在 pubid 中具有正确 guid 的行。大多数行,大约 160 万行,在 pubid 中的值为 NULL,我不明白为什么。有人知道为什么有这么多空值吗?
我发现由于我使用匿名订阅者,该出版物将获得所有更改的所有权,并且不会为其更改设置 pubid。订阅者添加的唯一行是 artnick = 0 的行。因此,如果订阅者添加更改,订阅者将只有一行,并且它将具有发布的有效 guid,但该行不指向任何更改。相反,该出版物将添加更改,就好像起源于那里一样。
元数据清理的问题与空值无关,它是孤立的订阅。如果匿名订阅是从我们的手持设备之一创建的并且未同步,则会导致清理排除几代人。这是在 sql2012 中用 sp2 添加的,清理创建了一个排除的代列表,这些代是“活动的”问题是,如果 sysmergesubscriptions 中的订阅在 last_local_sentgen 中为 null,它将把 1 和 sentgen 之间的所有代添加到排除列表中,并且元数据不会被清理。我试图在我的测试环境中删除这些订阅,现在我可以看到清理正在正常运行。我还可以看到,如果订阅创建确实超时,也会发生这种情况。
希望这对某人有帮助。