最近我所有的 PULL 订阅在同步状态下都有这个消息。:-
该进程无法连接到分发服务器“DISTRIBUTIONDB”
这仅发生在 PULL 订阅中。我尝试使用新快照重新初始化,但消息仍然存在。
当试图查看历史时,它表明代理工作不存在。所以我删除了它并从 T-SQL 脚本重新创建了订阅和作业。监视器现在建议该作业不存在,但是在订阅者上运行 T-sql sp_addpullsubscription 代码时,我得到
消息 21002,级别 11,状态 1,过程 sp_addpullsubscription_agent,第 250 行此订阅的分发代理已存在 (YAZOO-MLT-Statics-KINKS-MLT-Replicated-94CD221C-4F8E-4732-8738-A6101E9D571B)。
这是一个权限问题,分发代理进程帐户对分发者没有权限。
验证分发代理进程帐户是 PAL 的成员,对快照共享具有读取权限,并且是订阅数据库中db_owner固定数据库角色的成员。
该帐户一直在使用 sa 帐户,因此即使这是一个糟糕的配置,也不确定它为什么会失败。
我已将它们全部切换为远程分发服务器上的推送订阅,并使用我已添加到 PAL 中的专用 Windows 登录。
这可以通过在 SMSS 中打开发布者 > 展开“复制”文件夹 > 右键单击发布并选择属性 > 发布访问列表 (PAL) 在 GUI 中访问