Quantcast
Channel: SQL Server Replication forum
Viewing all articles
Browse latest Browse all 4054

Merge Replication – Bug in Business Logic Update Handler

$
0
0

I have got a business logic update conflict handler working, but I have had to work round what appears to be a bug.

 

Please can someone confirm if this is indeed a bug – and if it is a known bug?

 

My conflict handler needs to take some columns from the publisher row and some from the subscriber row in the event of conflict.

 

I can quite happily generate a custom dataset which contains the winning row that I want – I can see that because I can step through the conflict handler with debug when a conflict occurs.

 

However, just returning ActionOnUpdateConflict.AcceptCustomConflictData from the UpdateConflictsHandler method does not set the publisher and subscriber columns correctly.  I end up with different values on the two databases.

 

I have found that the only way to get the correct rows on both publisher and subscriber is to create a new ADO connection to the publisher and actually perform an update – updating all the modified columns.  This now works reliably in my testing.

 

Fortunately, due to business rules the frequency of update conflicts are likely to be very infrequent, but I would very much like to avoid having to do the ‘unnecessary’ update.

 

Notes:

  • I am using column level tracking – but I have seen the problem with row level tracking too
  • I have mainly been using SP1 but have repeated the test on a configuration using the SP2 CTP – and the problem occurs there too
  • The problem is not due to complex logic in my code.  If the method just sets customDataSet = publisherDataSet.Copy  and then returns ActionOnUpdateConflict.AcceptCustomConflictData, the changed and winning publisher values are not sent to the subscriber

 

Any thoughts would be much appreciated


Viewing all articles
Browse latest Browse all 4054

Trending Articles