【问题标题】:SignalR SQL Server Broker - Orphaned Service Broker Queue ErrorsSignalR SQL Server 代理 - 孤立的服务代理队列错误
【发布时间】:2016-06-17 05:57:25
【问题描述】:

我在 SQL Server 2008 上使用 SQL Server Broker 进行具有 SignalR v2.1.2 的横向扩展。最近发现我们每天在数据库日志中产生 50k+ 错误。经过一番研究,从 12 月开始有 3 个孤立的 Service Broker 队列。错误示例:

2016-02-27 23:58:01.79 spid30s 已激活的 proc '[dbo].[SqlQueryNotificationStoredProcedure-2ffbddba-6ddc-4ad0-88b4-45a405e975e0]' 在队列 'MY_SIGNALR_DB.dbo.SqlQueryNotificationService-2ffbddba-6ddc- 上运行4ad0-88b4-45a405e975e0' 输出以下内容:'找不到存储过程'dbo.SqlQueryNotificationStoredProcedure-2ffbddba-6ddc-4ad0-88b4-45a405e975e0'。'

这些队列是在 12 月创建的,并且由于某种原因没有被删除。相应的 SP 显然已按预期下降。为此,数据库将每 5 秒产生一次错误(相当于每天 50k,有 3 个队列)。每个队列都包含一条消息。

问题:

是什么原因造成的?

是否可以实施其他 SignalR 设置以确保清理这些设置?

这是 SQL Server Service Broker 中的错误吗?

是否有文档描述 SignalR 在队列及其到期方面的预期行为?

感谢您的宝贵时间。

【问题讨论】:

    标签: sql-server sql-server-2008 signalr service-broker signalr-backplane


    【解决方案1】:

    这些是SqlDependency 的剩余部分。 SqlDependency.Start() 的实现是创建一个即时服务、队列和激活过程(参见reference source)。这有一些issues,甚至一个简单的Visual Studio debugging 会话也会留下搁浅的队列/激活的程序。

    您可以在这些剩余的服务/队列/过程发生时清理它们,或者您可以选择使用较低级别的SqlNotificationRequest 类并自行处理服务/队列部署。选择你的毒药。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多