Você precisa usar uma das chamadas dicas de tabela :
O bloqueio de atualização impede que outros processos tentem atualizar ou excluir as linhas em questão - mas não impede o acesso de leitura:
SELECT TOP (20) *
FROM [TMA_NOT_TO_ENTITY_QUEUE] WITH (UPDLOCK)
WHERE [TMA_NOT_TO_ENTITY_QUEUE].[STATE_ID] = 2
ORDER BY TMA_NOT_TO_ENTITY_QUEUE.ID
Há também um bloqueio exclusivo , mas basicamente, o bloqueio de atualização deve ser suficiente. Depois de selecionar suas linhas com um bloqueio de atualização, essas linhas são "protegidas" contra atualizações e gravações até que sua transação termine.