合并复制不适用于非默认冲突解决程序

时间:2015-08-04 10:23:58

标签: sql sql-server merge-conflict-resolution merge-replication resolver

我一直在评估SQL Server 2014上的合并复制和'推送'订阅。如果使用默认解析器(我参考sp_addmergearticle的@article_resolver参数),所有似乎都按预期工作。但是,如果我使用“Microsoft SQL Server订户始终赢得冲突解决程序”(或任何其他MS标准解析程序),如果订阅服务器位于不同的计算机上,则合并代理程序总是会出现以下错误:“进程无法初始化。验证组件是否已正确注册。” 如果订阅服务器与发布服务器和分发服务器位于同一台计算机上,则不会发生这种情况。

根据一些帖子,SQL Server 2008中似乎存在这个问题,但从那时起它就显然已经修复了。我尝试了以下内容:

  
      
  • @partition_options = 0,正如某处所建议的那样。

  •   
  • 将ssrpub.dll(解析器dll)复制到订购者计算机(这不应该是真的重要,因为这是'推送'订阅吗?)

  •   
  • 在发布商/分销商计算机上注册了带有regsvr32的ssrpub.dll。

  •   

我还在Publisher计算机上运行 sp_enumcustomresolvers ,它很高兴地展示了所有标准解析程序,包括“Microsoft SQL Server订阅者总是赢得冲突解决程序”。

另一个想法是,我使用SQL Server Express作为订阅服务器(在远程计算机上)。也许它不支持自定义解析器? (我正在使用“本地用户”变体中的完整SQL Server,它可以正常工作,如前所述)。

另请注意,如果我通过SSMS创建 new 发布,则“文章属性”对话框的“解析程序”选项卡为空,即它不会列出任何解析程序。如果为现有发布打开,则相同的选项卡包含完整的解析程序列表。

1 个答案:

答案 0 :(得分:1)

是的,事实证明SQL Server Express不支持自定义COM冲突解决程序;它实际上在这里得到确认:https://support.microsoft.com/en-us/kb/2664701。 还有自定义存储过程冲突解决程序,但它们需要一个特殊的" Microsoft SQLServer存储过程解析程序" ,这是一个COM解析程序,因此在SQL Server Express中不受支持任