Merge replication does not work with non-default conflict resolver

  • I have been evaluating merge replication, 'push' subscription on SQL Server 2014. If the default resolver is used (I refer to @article_resolver parameter of sp_addmergearticle), all seems to work as expected. However if I use "Microsoft SQL Server Subscriber Always Wins Conflict Resolver" (or any other MS standard resolver for that matter), if the Subscriber is on a different machine, the merge agent invariably gives the following error: "The process could not initialize <resolver_name>. Verify that the component is registered correctly."

    This does not happen if the Subscriber is on the same machine as the Publisher and Distributor.

    The problem seemed to exist in SQL Server 2008 according to some posts but it has been apparently fixed since then. I've tried the following:

    - @partition_options = 0, as was suggested somewhere.

    - Copied ssrpub.dll (the resolver dll) to the Subscriber machine (should not really matter as this is 'push' subscription?)

    - Registered ssrpub.dll with regsvr32 on the Publisher/Distributor machine.

    I've also run sp_enumcustomresolvers on the Publisher machine, and it happily showed all standard resolver, including the "Microsoft SQL Server Subscriber Always Wins Conflict Resolver".

    Another thought is, I'm using SQL Server Express as the Subscriber (on the remote machine). Perhaps it does not support custom resolvers? (I'm using the full SQL Server in the 'local subscriber' variant, which does work OK as I mentioned before).

    Note also that if I create a new publication via SSMS, the Resolver tab of the Article Properties dialog is empty, i.e. it does not list any resolver. The same tab contains the full list of resolvers though, if opened for an existing publication.

  • An important update: I've just tried 'full' SQL Server instead of SQL Server Express on the remote machine, and the non-default resolver does work! So it appears that SQL Server Express does not support non-default resolvers. :-((

    Next step will be to try a non-standard (custom) resolver, I will keep you updated how it went.

  • Yes it has turned out that SQL Server Express does NOT support custom COM conflict resolvers; it is actually confirmed here: https://support.microsoft.com/en-us/kb/2664701.

    There are also custom stored procedure conflict resolvers, but they require a special "Microsoft SQLServer Stored Procedure Resolver", which is a COM resolver, and as such is not supported in SQL Server Express either.

Viewing 3 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic. Login to reply