我有一个 2019 标准版发布者,它充当自己的分销商,在全球拥有 150 多个订阅者。有 4 个发布者,其中只有 2 个是活跃的。数据更改非常有限(每天大约 5 次写入)。订阅者都是 SQL 快速版。
我的主要问题是,一些分发代理经常决定不想正常启动;这意味着,作业在代理执行中陷入重试循环。当我查看复制监视器时,消息提示查看代理作业历史记录。代理作业历史记录指向复制监视器。
对于出现问题的代理,我已经尝试增加历史记录和输出详细程度以及将信息输出到文件,但看起来只有当代理经过初始化阶段时才会启动。
在网上阅读时,我发现了一篇关于桌面堆耗尽的旧文章,但它看起来也是指 2016 年之前的 WS(我正在运行 WS 2019),所以不确定是否真的适用。
进一步谷歌搜索没有找到任何有价值的信息。您是否知道除了向 MS 发送票据之外,调试/排除这些问题的方法,或者一些可以尝试和遵循的资源?
根据要求进行编辑,以下是我能看到的消息的复制粘贴:
复制监视器:错误消息:
- 代理“PublisherName-PublicationName-SubscriberName-AgentID”在发生错误后重试。已尝试重试 74 次。有关更多详细信息,请参阅“作业”文件夹中的代理作业历史记录。
由于。。。导致的结果
SELECT jh.*FROM msdb.dbo.sysjobhistory jh
INNER JOIN distribution1.dbo.MSdistribution_agents da
ON da.job_id = jh.job_id
WHERE da.name = ''
ORDER BY jh.instance_id DESC
(仅截取最新版本的截图)
经过几天的监控,终于解决了。
我可以确认我在上面的评论中所说的内容 - 桌面堆耗尽在较新的 Windows 版本中仍然存在;不幸的是,此处描述的监控步骤https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/replication/sql-replication-agents-not-run在较新的 Windows 版本中不起作用。
对我来说,最确凿的证据是系统日志中的信息级事件,其消息在文章中有所描述(应用程序弹出窗口:DISTRIB.exe - 应用程序错误:应用程序无法正确启动 (0xc0000142)。单击“确定”关闭应用程序。)
事件 ID 为 26,来源为应用程序弹出窗口。它是信息级的,这意味着如果您习惯于只关注警告、错误和严重信息,那么您就会错过它。
对我来说,解决方案是从连续订阅改为定时订阅。就我而言,我每 10 分钟订阅一次,并错开订阅以尽量减少回到原始状态的机会,但结果可能有所不同。
希望这对野外的人们有所帮助。