我一直在评估合并复制,SQL Server 2014 上的“推送”订阅。如果使用默认解析器(我参考 sp_addmergearticle 的 @article_resolver 参数),一切似乎都按预期工作。但是,如果我使用“Microsoft SQL Server Subscriber Always Wins Conflict Resolver”(或任何其他 MS 标准解决程序),如果 Subscriber 在另一台机器上,则合并代理总是会给出以下错误:“进程无法初始化. 验证组件是否正确注册。" 如果订阅者与发布者和分发者在同一台机器上,则不会发生这种情况。
根据一些帖子,该问题似乎存在于 SQL Server 2008 中,但此后显然已得到修复。我尝试了以下方法:
@partition_options = 0,正如某处所建议的那样。
将 ssrpub.dll(解析器 dll)复制到订阅者机器(应该不重要,因为这是“推送”订阅?)
在 Publisher/Distributor 机器上使用 regsvr32 注册 ssrpub.dll。
我还在 Publisher 机器上运行了sp_enumcustomresolvers,它愉快地显示了所有标准解析器,包括“Microsoft SQL Server 订阅者总是赢得冲突解析器”。
另一个想法是,我使用 SQL Server Express 作为订阅者(在远程机器上)。也许它不支持自定义解析器?(我在“本地订阅者”变体中使用完整的 SQL Server,正如我之前提到的那样,它确实可以正常工作)。
另请注意,如果我通过 SSMS 创建新出版物,“文章属性”对话框的“解析器”选项卡是空的,即它没有列出任何解析器。但是,如果为现有出版物打开相同的选项卡,则包含解析器的完整列表。