SignalR SQL Server代理 - 孤立的服务代理队列错误
我正在SQL Server 2008上使用SQL Server代理与SignalR v2.1.2进行扩展。最近发现我们在数据库日志中每天产生50k +错误。经过一番研究,从12月起,有3个孤立的Service Broker队列。错误例如:SignalR SQL Server代理 - 孤立的服务代理队列错误
2016年2月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秒钟会产生一次错误(相当于每天有3个队列的50k)。每个队列都包含一条消息。
问题:
什么能导致这种情况?
是否有额外的SignalR设置可以执行以确保这些清理?
这是SQL Server Service Broker中的错误吗?
是否有一个文档描述了SignalR在队列及其过期方面的预期行为?
谢谢你的时间。
这些是从SqlDependency
剩余的。 SqlDependency.Start()
的实现是创建一个即时服务,队列和激活的过程(请参见reference source)。这有一些issues,甚至一个简单的Visual Studio debugging会话可能会留下搁浅的队列/激活的过程。
您可以随时清理这些剩余的服务/队列/过程,也可以选择使用较低级别的SqlNotificationRequest
类,并自行处理服务/队列部署。选择你的毒药。