我们有一些使用 SQL Server Transport (3.1.2) 的 NServiceBus 处理程序 (6.4.0) 运行良好,但它们的过期消息清除周期始终无法删除任何行,并且始终记录有关此问题的 WARN。与消息相反,我没有看到端点表中积累了任何消息。下图是作为控制台应用程序运行的处理程序,记录了 WARN。
环境奇点:我们的传输(和用户数据)数据库处于兼容模式 80(即 SQL Server 2000 模式),即使服务器实例是 2008 R2。我们在传输表上遇到了一些问题,因为服务器抱怨说 ARITHABORT 必须打开才能支持这些表上使用的索引,但我们的公司软件要求它默认关闭。为了绕过全局更改它,在 EndpointConfig 中,我们使用“UseCustomConnectionFactory()”来提供一个创建新 SqlConnections 的函数,并在创建后在连接上运行 SET ARITHABORT ON,然后将其返回以供应用程序使用。这似乎解决了这个问题——但现在我们得到了清除失败和警告。实际的错误消息提到“超时”和“服务器没有响应”——但数据库是持续可用的,可查询,并在发生这种情况时使用。此外,当音量非常低时会发生这种情况 - 低至每分钟 2 或 3 条消息。
非常感谢您对可能出现的问题、我们如何进一步调试或如何解决问题的任何想法。