Посредник SQL Server SignalR - ошибки очереди потерянного компонента Service Broker
Я использую SQL Server Broker на SQL Server 2008 для масштабирования с SignalR v2.1.2. Недавно было обнаружено, что мы генерируем 50 000+ ошибок в день в наших журналах БД. После некоторых исследований в декабре появилось 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'.'
Эти очереди были созданы в декабре и по какой-то причине НЕ были удалены. Соответствующие SP, очевидно, были отброшены, как и ожидалось. Для этого БД будет выдавать ошибку каждые 5 секунд (приравнивается к 50 тыс. В день с 3 очередями). Каждая очередь содержит сообщение.
Вопросы:
Что может вызвать это?
Существуют ли дополнительные параметры SignalR, которые могут быть реализованы для обеспечения их очистки?
Это ошибка в SQL Server Service Broker?
Есть ли документ, который описывает ожидаемое поведение SignalR в отношении очередей и их срока действия?
Спасибо за ваше время.
1 ответ
Это остатки от SqlDependency
, Реализация SqlDependency.Start()
заключается в создании своевременной услуги, очереди и активированной процедуры (см. справочный источник). Это имеет некоторые проблемы, и даже простой сеанс отладки Visual Studio может оставить незапланированные очереди / активированные процедуры.
Вы можете очистить эти оставшиеся службы / очереди / процедуры, как они происходят, или вы можете использовать более низкий уровень SqlNotificationRequest
Классифицируйте и управляйте развертыванием службы / очереди самостоятельно. Выбрать свой яд.