Monday, March 12, 2012

Merge replication issue

I have merge replication set up running between a central database and
multiple subscribers. I am noticing that data that being sent from the
subscriber is not being applied to the publisher with conflicts. I am also
seeing that data that was in the subscriber yesterday is not in the
subscriber today. Some of the tables are set to use timestamp (latest wins)
as the conflict resolver while others are set to use the "default" conflict
resolver. What is the default? Why is data being removed on the subscriber
when it originated from there to begin with? If I change the conflict
resolver on the tables to be "subscriber always wins" will this help solve
the problem of missing data?
Cmoss,
do you have filters? If the rows aren't allowed through the filter clause,
this could explain why records added at the subscriber are removed on
synchronization.
The default resolver is publisher always wins, and if 2 subscribers
conflict, the first attains the priority of the publisher.
HTH,
Paul Ibison
|||Paul,
Thanks for the response. I do have filters on the articles, but the data
that is being removed is from the same tables that data was successfully
synchronized from before. I have changed the conflict type on some of my
crucial articles to be "subscriber always wins" becuase that is where the
data originates from. It is my understanding that I can change this
parameter at any time, correct?
"Paul Ibison" wrote:

> Cmoss,
> do you have filters? If the rows aren't allowed through the filter clause,
> this could explain why records added at the subscriber are removed on
> synchronization.
> The default resolver is publisher always wins, and if 2 subscribers
> conflict, the first attains the priority of the publisher.
> HTH,
> Paul Ibison
>
>
|||Yes - in my experience the resolver can be changed
dynamically. This'll mean that publisher deletes will be
discarded if the records are updated on the subscriber.
HTH,
Paul Ibison
|||Paul,
Thanks for the info. I an reviewing my subscriptions an have noticed
something odd. I have one subscription that synchronized last evening and
the results are as follows:
Merged 0 data changes ( 0 inserts, 0 updates, 0 deletes, 2 resolved conflicts)
How can I have conflicts if no data is synchronized between the local and
remote databases? Is there a way I can see what these conflicts are? I can
look at the data in the msmerge_delete_conflicts table but there were no
deletes performed.
"Paul Ibison" wrote:

> Yes - in my experience the resolver can be changed
> dynamically. This'll mean that publisher deletes will be
> discarded if the records are updated on the subscriber.
> HTH,
> Paul Ibison
>
|||Cmoss,
yes , you can right-click the publication and select 'View Conflicts'. The
conflict has already been resolved, but the details are logged and in the
conflict viewer you can reverse the selected winner/loser.
HTH,
Paul Ibison
|||I actually faces the same problem too. I used the default resolver for all
the conflict tables. Somehow I realize that there's conflict even though the
server did not do any changes and only the client do the update of a row. I
wonder why there could be conflicts even though only the subscriber do the
update. I have no choice but to switch to 'subscriber wins over publisher'
conflict resolver to solve the problem though it is not the ideal solution.
Yimmy

No comments:

Post a Comment