У меня есть очередь SQL Server 2008 Service Broker, которая обрабатывает сообщения, вызывая хранимую процедуру CLR (которая, в свою очередь, передает сообщения через HTTP в сторонний REST API). Мне нужно разобраться в вопросе "какое резервное копирование?" или "насколько далеко?" это очередь. Хотя я понимаю, что общее количество сообщений в очереди является хорошим индикатором прогресса, меня интересует вопрос: «Как долго последнее обработанное сообщение ожидало обработки в очереди?» Насколько я могу судить, выбор из очереди дает вам все сообщения в ней, но не дает возраст сообщения. Например:
SELECT TOP 100 *, casted_message_body =
CASE message_type_name WHEN 'X'
THEN CAST(message_body AS NVARCHAR(MAX))
ELSE message_body
END
FROM [SyncReadTargetQueue] WITH(NOLOCK)
Но ни в одной из колонок не указан возраст.
Есть идеи?