Мы используем Service Broker в SQL Server 2008R2 в качестве простого планировщика заданий. Мы отправляем сообщение брокеру, и он устанавливает его для обработки в запрошенную дату/время.
У нас есть задание (хранимая процедура), которое автоматически назначается действиями пользователя на сайте Sharepoint, и оно отлично работает уже около года. Эта хранимая процедура создает 2 таблицы, если они не существуют, усекает их, если они существуют, а затем вызывает 2 другие хранимые процедуры (последовательно) для заполнения каждой из таблиц.
Несколько недель назад вторая из двух хранимых процедур начала давать сбой, когда основной процесс «задание» был инициирован SB. Если я захожу в SSMS, я могу выполнить хранимую процедуру «задание», и она выполняется до завершения без проблем (т.е. обе вызываемые хранимые процедуры выполняются без проблем, и обе таблицы заполняются).
Наша компания в своей бесконечной мудрости решила уволить парня, который настроил Service Broker и написал эти хранимые процедуры. Я разбираюсь в хранимых процедурах и начинаю немного разбираться в SB, но я не понимаю, почему вторая хранимая процедура будет выполняться из SSMS, но терпит неудачу при вызове из Service Broker.
Единственное, о чем я могу думать, это то, что Служба была создана с помощью этой команды:
CREATE SERVICE [//ScheduledJobService]
AUTHORIZATION [user ID]
ON QUEUE [dbo].[ScheduledJobQueue] ([//ScheduledJobContract])
и что что-то случилось с его удостоверением личности в тот день, когда оно перестало работать. Однако это не объясняет, почему часть кода будет выполняться и как продолжают выполняться другие задачи в компоненте Service Broker.
Я не знаю, где искать и как это отследить, поэтому буду очень признателен за любые советы по устранению неполадок.