关于这个主题打开了许多线程,似乎没有一个可以解决我的问题,所以我要试一试..
系统:Windows Server 2012 SQL Server 2012 企业版
问题:我们使用 SQLDependency 在我们的应用程序中启用查询通知,这意味着它创建自己的服务、队列和过程。
问题 1:查看存储过程,我看到它确实收到了 top 0。top 0 是什么意思?
现在是真正的问题.. 有时,错误日志中充满了以下消息(直到我无法打开它):查询通知传递无法在对话框'X'上发送消息....因为以下错误在服务代理中:'找不到对话句柄 X。消息以相同的 conversation_handle 或 3 个最多的不同出现。
当我从 sys.conversation_endpoints 查询该对话时,我确实看到了它,并且它被标记为 is_system = 1 (STARTED_OUTBOUND)。
我添加了一个关于错误 9245 的警报,以尝试确定它发生时发生的原因。在消息“在最后一个时间间隔 X 查询通知错误被抑制”中,X 非常大,超过 10,000 个。我猜这个数字与重审有关,因为我们没有这么多的通知。
起初,我认为它可能与“DialogTimer”消息有关,因为我注意到当我结束该特定消息的对话时,消息停止但最近它不起作用所以我唯一能做的就是设置 NEW_BROKER .
当我确实回收到我们的应用程序池时,它立即发生,尽管我在我们的日志中看到它调用 SQLDependency.Stop ,我没有看到对象(服务、队列和过程)被丢弃并且错误消息开始淹没错误日志。
如果需要更多详细信息,请告诉我。感谢你的帮助,