Just to complement or add to the other answer
there are times you get a really hairy message
first thing I do is to turn on the verbose:
Turn on verbose history (Replication monitor->Agent Profile->Verbose History) and use the -output parameter and select a destination for the output file (Subscriber Replication Job -> Edit Run Agent Job -> In the command window add -output C:\MyFilePath\FileName.log).
and:
Have a look at the latest part of the command below, you see the output parameter.
-Publisher [TCP-ODS01] -PublisherDB [concord_ods] -Publication [MERLIN_PUBLICATION] -Subscriber [MERLIN771] -SubscriberDB [ConCORD_ODS] -Distributor [TCP-MERGE01] -DistributorSecurityMode 1 -HostName [MERLIN771] -output C:\Replication\MERLIN771_1132.log
Now we can have a look at the log file.
Now you can have a look on the log generated and proceed from there.
Example (see the next picture below):
The command on the job is:
--This is the MERLIN307 subscriber, I am troubleshooting, outputting to the log at c:\replication and using the - VerbatimTextObjectScripting 0 option.
-Publisher [TCP-ODS01] -PublisherDB [concord_ods] -Distributor [TCP-MERGE01] -Publication [MERLIN_PUBLICATION] -ReplicationType 2 -DistributorSecurityMode 1 -DynamicFilterHostName [MERLIN307] -DynamicSnapshotLocation [\\TCP-MERGE01\REPLDATA\\unc\TCP-ODS01_CONCORD_ODS_MERLIN_PUBLICATION\MERLIN307_9\] -PartitionId 9 -VerbatimTextObjectScripting 0 -output C:\Replication\MERLIN307-983.log
I can't really give you a straight answer to your case in particular, but I can definitely help you finding out what the problem is, using these steps above.
If it sounds confusing, drop a comment below I will try to be more specific.
I have run into this in the past. In my experience typically this will resolve it's self by just restaring the sync process. From the client in a pull situation, or restart from the publisher in a push situation.
In short the application of DDL changes ran into a conflict but restarting the sync will usually resolve the issue. And no, it doesn't start from the beginning, it should just pick up from the point of failure.
It also wouldn't hurt to make sure that your snapshot is up to date and current.
Best Answer
The error could say:
However your error states:
The validation of the merge performs a binary checksum like this:
As stated by others, the validation during merge can be a bit buggy and you may find it better to roll your own validation.
You can turn off validation by removing the
-Validate x
parameter from the merge agent.Regarding your error: Microsoft recommends trying again later, as if the error is temporary. As for code to validate it, you could try the code I link to, but I think you will need to write your own to validate it based on business rules for your data. There shouldn't be harm in disabling the validation, if there was inherent harm the option wouldn't exist. But I would try it with a temporary/test server first.