Article ID: 309400
Article Last Modified on 10/3/2003
APPLIES TO
- Microsoft SQL Server 2000 Service Pack 3a
- Microsoft SQL Server 2000 Service Pack 1
This article was previously published under Q309400
BUG #: 355551 (SHILOH_BUGS)
BUG #: 354850 (SHILOH_BUGS)
BUG #: 354716 (SHILOH_BUGS)
BUG #: 353578 (SHILOH_BUGS)
SYMPTOMS
Under some circumstances, you may find that changes have not replicated properly to some replicas in a merge replication topology, a state known as non-convergence. This article documents some merge replication non-convergence problems in SQL Server 2000 that have been corrected in SQL Server 2000 Service Pack 2.
CAUSE
Here is a list of the SQL Server 2000 non-convergence issues that are fixed by SQL Server 2000 Service Pack 2:
Bug Number Description ---------------------------------------------------------------------- #355551 Merge metadata cleanup (either using retention-based cleanup introduced in SQL Server 2000 Service Pack 1 or using the old-style metadata cleanup through the sp_mergecleanupmetatdata stored procedure) on one side of a replication topology (that is, at either the publisher or the subscriber, but not both), followed by an update of a row on the side that was not cleaned up can result in non-convergence. This problem only occurs when the article in question is using column-level conflict tracking, which is the default. #354850 When the merge replication reconciler cannot apply an update at the destination replica, and SQL Server retries the update operation, non-convergence can result. The lineage and COLV metadata in the MSmerge_contents table at the source and destination replicas is the same. #354716 When SQL Server localizes interrupted generations, changes to rows in the MSmerge_genhistory and MSmerge_contents table are made in separate transactions. If another Merge Agent enumerates changes between these transaction boundaries, the Merge Agent incorrectly assumes that the generation was received at the destination, resulting in non- convergence. #353578 Local subscribers can encounter merge non-convergence under stress conditions. The Merge Agent (using an extended stored procedure) reads merge metadata for a particular row, caches that metadata, makes changes to the metadata during "metadata proxying," and then writes that metadata back to the destination replica. If a subscriber makes a change to the merge metadata in the small window that exists before the modified metadata is written to the destination replica, non-convergence can result.
RESOLUTION
To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack
WORKAROUND
Here are two methods that you can use to work around this problem:
- In many cases, you can alleviate problems with merge replication non-convergence through dummy updates. This simply entails updating a particular row so that you update all of the columns in the row to themselves. To merge replication, this updates the metadata kept in the merge system tables, making the row eligible for replication during the next merge session.
- In other cases, you can use the -ForceConvergenceLevel merge agent parameter to work around non-convergence problems. For more information about the use of -ForceConvergenceLevel, see the following article in the Microsoft Knowledge Base:
305039 INF: -ForceConvergenceLevel Merge Agent Parameter is not Documented
STATUS
Microsoft has confirmed that this is a problem in Microsoft SQL Server 2000. This problem was first corrected in Microsoft SQL Server 2000 Service Pack 2.
REFERENCES
For additional information other merge replication non-convergence fixes in SQL Server 2000 Service Pack 2, click the article numbers below to view the articles in the Microsoft Knowledge Base:
304703 FIX: Pull Subscribers Experience Non-Convergence After Running sp_mergecleanupmetadata Against a Published Database
304222 FIX: Merge Replication Non-Convergence Occurs with Local Subscribers when Published Table has 32 or More Columns
Keywords: kbbug kbfix KB309400