首页 > 解决方案 > 订阅者表上的两个标识范围约束 - SQL Server 复制

问题描述

我们有可更新订阅的事务复制。在订阅者有几个具有双重身份约束的表。(不知道如何复制它。也许它发生在重新创建复制的重新初始化之一期间)例如:

CHECK NOT FOR REPLICATION (([ID]>(513000) AND [ID]<(514000)))
CHECK NOT FOR REPLICATION (([ID]>(347934) AND [ID]<(360000)))

DBCC CHECKIDENT 结果:

Checking identity information: current identity value 'NULL', current column value '538185'.

复制按预期工作,但我们希望摆脱过度约束。不知道为什么当前身份在这里为 NULL。我知道我们可以重新设定 ident 使其在范围内,但是如何确定 2 个约束中的哪一个对于复制是有效的和实际的?对于某些表,这不是问题,当前 ident 在 2 个范围内,但这里还有另一个问题:我们如何安全地移除过度约束?

我相信我们可以从复制中删除文章,验证所有约束都从表中删除,然后放回文章并重新初始化所有订阅。但是重新初始化对我们来说并不是一个很好的解决方案,因为它会花费太多时间并且可能会伤害我们的客户。

如果我们只尝试删除其中一个约束——它会对复制造成任何损害吗?某些系统表中是否保存了有关约束的信息,这可能会导致将来出现问题?

关于整洁解决方案的任何想法?

标签: sql-serverconstraintsdatabase-replication

解决方案


推荐阅读