Estou lendo os livros on-line do SQL Server para a primeira equipe enquanto aprendo como usar o agente de serviços e me deparei com esta declaração:
O aplicativo que implementa o serviço lê a mensagem, executa a consulta e retorna os resultados. Todas essas três operações ocorrem na mesma transação. Se ocorrer uma falha antes da confirmação da transação, toda a transação será revertida e a mensagem retornará à fila. Quando o computador se recupera, o aplicativo é reiniciado e processa a mensagem novamente.
Eu estou supondo que isso irá bloquear da mesma forma que as transações normais? ou seja bloqueios de linha/página. Estou correcto? Isso é algo com que devo me preocupar ou apenas deixar até que eu tenha um problema?
Quando o service broker extrai mensagens da fila usando um procedimento armazenado de ativação (ou em qualquer método), todas as regras normais de bloqueio se aplicam à fila e aos objetos referenciados no código após o recebimento de mensagens da fila do service broker.
Observe que as informações em BOL que você citou são verdadeiras apenas se você receber dentro de uma transação definida explicitamente. Se você receber uma mensagem e não houver nenhuma transação explícita para reverter, o banco de dados não poderá colocar a mensagem de volta na fila.