SQL Server ReplMerge无法连接订阅者(错误20084)求助
SQL Server合并同步请求订阅连接失败(错误20084)
环境信息
- 发布者:SQL Server 2019 Standard(服务器端),与订阅者通过VPN连接
- 订阅者:SQL Server 2019 Express(本地笔记本)
- 同步配置:合并同步(Merge Sync),请求订阅(Pull)
问题描述
本地笔记本创建批处理执行replmerg.exe启动同步时,程序立即停止,报错无法连接订阅者Subscription-Local\TEST,错误编号20084,随后断开与OLE DB订阅者的连接。
执行的批处理代码:
"C:\Program Files\Microsoft SQL Server\150\COM\replmerg.exe" -Publisher Publication-Server\TEST -PublisherDB TEST -Publication TESTPub -Subscriber Subscription-Local\TEST -SubscriberDB TEST-SubscriptionType 1 -SubscriberSecurityMode 1 -Distributor Publication-Server\TEST -OutputVerboseLevel 2 -Validate 3 -Continuous
已尝试操作
- 切换身份验证方式
- 以管理员身份运行批处理
- 重新创建发布和订阅
解决建议
修正批处理参数语法错误
原批处理中-SubscriberDB TEST与-SubscriptionType 1之间缺少空格,导致TEST-SubscriptionType被错误识别为订阅数据库名称,这是核心问题。修正后的代码:"C:\Program Files\Microsoft SQL Server\150\COM\replmerg.exe" -Publisher Publication-Server\TEST -PublisherDB TEST -Publication TESTPub -Subscriber Subscription-Local\TEST -SubscriberDB TEST -SubscriptionType 1 -SubscriberSecurityMode 1 -Distributor Publication-Server\TEST -OutputVerboseLevel 2 -Validate 3 -Continuous验证本地SQL Server实例连通性
- 用SQL Server Management Studio以Windows身份验证连接
Subscription-Local\TEST实例,确认能正常访问TEST数据库 - 检查SQL Server (TEST)服务是否正常运行,若依赖SQL Server Agent则一并确认状态
- 用SQL Server Management Studio以Windows身份验证连接
排查VPN网络连通性
- 在本地笔记本执行
ping Publication-Server,确认与发布者服务器的网络连通性 - 检查发布者服务器的SQL Server默认端口(1433)是否在VPN网络中开放,无防火墙拦截
- 用
telnet Publication-Server 1433验证端口可访问性
- 在本地笔记本执行
确认订阅者权限配置
- 确保执行批处理的Windows用户在订阅者实例上拥有
sysadmin或db_owner权限,同时具备合并代理的相关操作权限(可在SSMS订阅属性中检查代理账户设置) - 若使用SQL身份验证,需确保订阅者SQL账户权限充足,并在批处理中补充
-SubscriberLogin和-SubscriberPassword参数
- 确保执行批处理的Windows用户在订阅者实例上拥有
生成详细日志定位问题
添加-Output参数指定日志路径,获取更完整的同步错误信息:"C:\Program Files\Microsoft SQL Server\150\COM\replmerg.exe" -Publisher Publication-Server\TEST -PublisherDB TEST -Publication TESTPub -Subscriber Subscription-Local\TEST -SubscriberDB TEST -SubscriptionType 1 -SubscriberSecurityMode 1 -Distributor Publication-Server\TEST -OutputVerboseLevel 2 -Validate 3 -Continuous -Output "C:\repl_sync_log.txt"查看日志文件中的细节,进一步排查连接失败原因
内容的提问来源于stack exchange,提问作者JLeten
相关产品推荐
相关产品推荐

