INF: -ForceConvergenceLevel Merge Agent Parameter is not Documented (305039)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q305039

SUMMARY

The -ForceConvergenceLevel parameter for the Merge Replication Agent is not documented in SQL Server 2000 Books Online. This article explains the function and use of the
-ForceConvergenceLevel parameter.

MORE INFORMATION

Here is the syntax that you use for the -ForceConvergenceLevel parameter:
-ForceConvergenceLevel 0 | 1 | ( 2 (Publisher | Subscriber | Both) )
The -ForceConvergenceLevel parameter is useful in situations where you find that changes are not being converged during a merge session (a problem known as replication non-convergence).

The-ForceConvergenceLevel parameter can work around problems in the following situations:
  • Some generations at the source replica were skipped.

    -or-

  • Lineage values in MSmerge_contents system table have become logically incorrect.
When you pass the -ForceConvergenceLevel parameter to the Merge Agent with a value of one (1), the Merge Agent (during the closing of currently open generations and the opening of new generations) makes changes to generation values stored in the MSmerge_contents system table and the MSmerge_tombstone system table so that any skipped generations are enumerated. This ensures that any changes represented by those generations are eligible for reconciliation during the next merge session. One caveat, however, is that the generation cannot already exist at the destination replica. That is, there cannot already be a row in the MSmerge_genhistory system table for that generation at the destination.

When you pass the -ForceConvergenceLevel parameter to the Merge Agent with a value of two (2), the Merge Agent performs all of the generation handling described previously, and also runs a stored procedure at the replica specified to "fix up" any incorrect lineage values in the MSmerge_contents system table. The lineage column in the MSmerge_contents system table is a varbinary column that stores information about row-level versioning. The lineage column is used in merge change tracking and conflict detection along with the colv1 column in the MSmerge_contents system table. Incorrect values in the lineage column or colv1 column may lead to changes not being properly converged.

It is important to note that this Merge Agent parameter is not guaranteed to correct non-convergence problems. There may be a case in which changes are skipped, but the changes were skipped due to another problem. Note that no such problems are currently known to occur. Additionally, performance may be impacted when you run the Merge Agent with the -ForceConvergenceLevel parameter in a production environment.

REFERENCES

For additional information about known issues that are not subject to a workaround with the -ForceConvergenceLevel parameter, 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

304551 FIX: Merge Publishing with Vertical Filters Results in Nonconvergence

304222 FIX: Merge Replication Non-Convergence Occurs with Local Subscribers when Published Table has 32 or More Columns


Modification Type:MajorLast Reviewed:10/3/2003
Keywords:kbinfo KB305039