SQL Server复制错误

“由复制pipe理的身份范围已满,必须由复制代理更新。”

这已经开始发生。 我们最近打破了复制的目的,并不打算重新build立复制。

我还需要做什么来解决这个错误? 有没有人对我有任何build议?

MS SQL Server复制使用主键列上的数据库约束来防止服务器之间的冲突。

例如,假设您有一个名为“users”的表,在服务器A和服务器B上运行一个名为“user_id”的主键。服务器A将对user_id列有一个约束,允许值在1到100的范围内。服务器B将对user_id列有一个限制,允许值在101到200之间。这样,如果一个新用户同时被插入到服务器A上,同时另一个新用户被插入到服务器B上,他们将永远不会相同的user_id号码。

既然你有意破坏了复制,不打算再次启动它,你有两个select。 (标准免责声明:备份。)

如果您还没有,可以尝试从SQL Server Management Studio中删除发布。 这应该从您的数据库中删除所有的复制configuration的东西,并可能为您解决这个问题。

否则,如果您需要手动执行,则应该手动进入并删除这些约束。 转到有问题的表格,深入研究约束条件,然后查找名称与“repl_identity_range”类似的名称。 右键点击它并select“修改”。 你应该看到一个限制身份范围的expression式。 它看起来像这样:

([user_id]]>(1)AND [user_id]] <=(100))

这是确保新生成的id对于每个服务器唯一的实际规则。 删除它,你应该停止看到这些错误。

以下是其他一些可能有用的信息:

http://www.simple-talk.com/sql/database-administration/the-identity-crisis-in-replication/ http://msdn.microsoft.com/en-us/library/ms176057.aspx