Sql-server – Status for a service broker queue

service-brokersql server

Looking at the sys.service_queues DMV, I see that there are columns called "is_enqueue_enabled" and "is_receive_enabled". However, in the "ALTER QUEUE" DDL, there only seems to be a "STATUS" that can be toggled. Similarly, in the SMO for a queue, there seems to be only a "IsEnqueueEnabled" property. My question is: will it always be the case that is_enqueue_enabled and is_receive_enabled have the same value? If not, how does one set them independently?

Best Answer

The original design called for separate enqueue_enabled (allow SEND) and dequeue_enabled (allow RECEIVE). The added complexity (as SSB wouldn't already be complex enough!) did not warrant the benefits, so in the end it was settled for a less granular 'queue enabled'. The metadata though was intentionally left split in order to enable the separation in future. Now, even if there is no plan to split the enable/disable in SEND/RECEIVE, the view has to stay like that because of back compat issues.

From your point of view: the two values should always be in sync (both 0 or both 1). Altering the enabled/disabled status on the queue should change both values at once.