PRB: Non-Convergence When SQL Server Processes Child and Parent Generations in Separate Generation Batches (308266)
The information in this article applies to:
- Microsoft SQL Server 2000 (all editions)
- Microsoft SQL Server 7.0
This article was previously published under Q308266 SYMPTOMS
A loss of INSERT commands into child tables at a subscriber may occur under the following conditions:
- The merge replication topology is hierarchical, with a publisher, one or more republishers, and one or more subscribers.
- One or more parent and child articles exist in a merge replication publication, with a join filter defined between them.
- A NOT FOR REPLICATION foreign key constraint exists at the republisher and subscriber for the relationship between these two articles.
- INSERTs into a child article occur in a generation separate from its associated parent generation by more than the value specified in the -DownloadGenerationsPerBatch merge agent parameter. So, the merge agent processes the child generation in a batch of generations separate
from its associated parent generation.
- There is an interruption of merge processing between the publisher and republisher and between the processing of the child and parent generation batches.
WORKAROUND
The merge replication architecture does not provide a mechanism to keep parent and child changes together across generation batch boundaries. To work around this problem, you can either:
- Increase the -UploadGenerationsPerBatch and -DownloadGenerationsPerBatch Merge Agent parameters to their maximum value of 2000, which virtually eliminates the possibility of processing a child article's generation in a batch separate from the parent article's generation.
-or-
- Remove the NOT FOR REPLICATION property on the foreign-key constraints at the republisher. In this case, the Merge Agent is not able to insert rows into the child article because there are no associated parent-article rows. Keep in mind, however, that there could be performance degradation associated with this change. If the Merge Agent is unable to insert these child rows, those changes must be "retried." The Merge Agent retry process is much less efficient than its normal mode of batch processing.
Modification Type: | Major | Last Reviewed: | 10/16/2003 |
---|
Keywords: | kbpending kbprb KB308266 |
---|
|