繁体   English   中英

SignalR SQL Server代理-孤立的服务代理队列错误

[英]SignalR SQL Server Broker - Orphaned Service Broker Queue Errors

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

2016-02-27 23:58:01.79 spid30s已激活的进程'[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下降了。 DB将为此每5秒产生一次错误(相当于每天3万个队列,每天50k)。 每个队列都包含一条消息。

问题:

是什么原因造成的?

是否可以实施其他SignalR设置以确保将其清除?

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

是否有文档描述SignalR关于队列及其到期的预期行为?

感谢您的时间。

这些是SqlDependency遗留物。 SqlDependency.Start()的实现是创建即时服务,队列和激活过程(请参阅参考资料 )。 这有一些问题 ,甚至简单的Visual Studio 调试会话也可能会留下搁浅的队列/激活的过程。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM