【问题标题】:Service broker - conversation handle not found messages in SQL Server error log服务代理 - SQL Server 错误日志中未找到会话句柄消息
【发布时间】:2014-02-06 07:29:44
【问题描述】:

关于这个主题打开了许多线程,似乎没有一个可以解决我的问题,所以我要试一试..

系统: 视窗服务器 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,但我没有看到对象(服务、队列和过程)被丢弃并且错误消息开始淹没错误日志。

如果需要更多详细信息,请告诉我。 感谢您的帮助,

【问题讨论】:

  • 阅读那篇文章几次。所描述的场景都与我的不匹配。我做了几个测试,每当我重新启动 iis 应用程序池时,它会立即开始每隔几毫秒将数千条这些消息发送到我的错误日志中。设置 NEW_BROKER 确实会重置它,但我想找到问题而不是像这样修复它。我想尝试使用预定义的服务、队列和 sp,而不是让 sqldependency 创建它们,但这会损害在没有一些手动工作的情况下创建新实例的灵活性。

标签: sql-server sql-server-2012 service-broker sqldependency query-notifications


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多