3

我一直在评估合并复制,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 创建出版物,“文章属性”对话框的“解析器”选项卡是空的,即它没有列出任何解析器。但是,如果为现有出版物打开相同的选项卡,则包含解析器的完整列表。

4

1 回答 1

1

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

于 2015-08-05T01:04:59.817 回答