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



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q304222
BUG #: 354844 (SHILOH_BUGS)

SYMPTOMS

One or more rows do not converge between a Publisher and a Subscriber. The lineage and colv1 metadata for the non-converged rows are equal on both the Publisher and Subscriber, but the data values of the columns on the non-converged rows are not.

This occurs only if all of the following conditions are true:

  • The subscription is either a local or anonymous subscription.

  • The article that is experiencing non-convergence is configured for column-level conflict detection.

  • The published article has 32 or more columns.

  • The non-converged changes originate at the Subscriber.
NOTE: Additionally, the Subscriber appears to be at a point-in-time beyond that of the Publisher.

CAUSE

When an article is configured for column-level conflict detection, changes to individual columns on a given row are tracked in the colv metadata that is stored in the colv1 column of the msmerge_contents replication system table.

When a "local" (or anonymous) subscriber uploads its changes to the Publisher during the synchronization process, the Publisher assumes ownership of the Subscriber's changes. The Merge Agent affects this ownership change by updating the row metadata to assign ownership of changes to the Publisher, and then proxies the updated metadata from the Publisher back to the Subscriber. The proxied metadata is then used to update the Subscriber to reflect the Publisher as the new owner of a given set of changes.

Under certain circumstances, the process of proxying the updated metadata from the Publisher to the Subscriber is not handled properly, which leads to non-convergence.

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

Hotfix

NOTE: The following hotfix was created prior to Microsoft SQL Server 2000 Service Pack 2.

The English version of this fix should have the following file attributes or later:
File name      Platform
-----------------------
s80420i.exe    x86
NOTE: Due to file dependencies, the most recent hotfix or feature that contains the preceding files may also contain additional files.

WORKAROUND

To work around this problem you can either:
  • Use a global subscription instead of a local subscription.

    -or-

  • Configure problem articles to use row-level conflict tracking. You can request row-level conflict tracking on an article by article basis when you first create the publication. You can also set row-level conflict tracking by modifying the properties of an existing publication; however, this requires all subscriptions to the publication to be reinitialized.

STATUS

Microsoft has confirmed this to be a problem in SQL Server 2000. This problem was first corrected in Microsoft SQL Server 2000 Service Pack 2.

MORE INFORMATION

You must install this fix to all local and anonymous subscribers that are susceptible to the conditions listed in the "Symptoms" section of this article.

REFERENCES

SQL Server 2000 Books Online: topics: "Set Subscription Priority"; "Merge Replication Conflict Detection and Resolution"

Modification Type:MajorLast Reviewed:10/9/2003
Keywords:kbBug kbfix kbSQLServ2000preSP2Fix KB304222