如何监控SQL Service Broker中的消息时代?

时间:2012-08-30 14:05:52

标签: sql sql-server-2008 service-broker

我有一个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)

但是,没有一列表示年龄。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

要获取消息到达的时间,您可以使用sys.conversation_endpoints中的“security_timestamp”。

如何监控Service Broker-也许this有帮助。