Existe uma maneira de saber quantas tarefas externas (aplicativos de console) estão lendo a fila?
Estou usando o ativador externo do Service Broker.
O que eu quero é algo semelhante às informações que recebo de sys.dm_broker_activated_tasks , apenas para leitores de fila externos.
Tipo de. Você pode ver
sys.dm_exec_requests
executando uma instrução RECEIVE (incluindo um WAITFOR RECEIVE). Simplesmente espiando o texto atualmente em execuçãosys.dm_exec_sql_text(sql_handle)
entre ostatement_start_offset
estatement_end_offset
você pode ver se a instrução é RECEIVE ou não (com alguma análise...). Descobrir se uma transação ativa emitiu um RECEIVE e agora está processando mensagens retornadas é mais complicado.É de alguma forma um pedido incomum, por que você precisa saber?