Использование SQL Server в качестве очереди БД с несколькими клиентами

Учитывая таблицу, которая действует как очередь, как я могу лучше всего настроить таблицу / запросы так, чтобы несколько клиентов обрабатывали из очереди одновременно?

Например, в таблице ниже указана команда, которую должен обработать работник. Когда рабочий будет сделан, он установит обработанное значение в true.

| ID | COMMAND | PROCESSED |
|  1 | ...     | true      |
|  2 | ...     | false     |
|  3 | ...     | false     |

Клиенты могут получить одну команду для работы следующим образом:

select top 1 COMMAND 
from EXAMPLE_TABLE 
with (UPDLOCK, ROWLOCK) 
where PROCESSED=false;

Однако, если есть несколько рабочих, каждый пытается получить строку с ID = 2. Только первый получит пессимистическую блокировку, остальные будут ждать. Тогда один из них получит ряд 3 и т. Д.

Какой запрос / конфигурация позволят каждому рабочему клиенту получать разные строки и работать с ними одновременно?

РЕДАКТИРОВАТЬ:

В нескольких ответах предлагаются варианты использования самой таблицы для записи состояния процесса. Я думал, что это не будет возможно в рамках одной транзакции. (то есть, какой смысл обновлять состояние, если никакой другой работник не увидит его, пока txn не будет зафиксирован?) Возможно, предложение таково:

# start transaction
update to 'processing'
# end transaction
# start transaction
process the command
update to 'processed'
# end transaction

Так люди обычно подходят к этой проблеме? Мне кажется, что проблема была бы лучше решена БД, если это возможно.

Ответы на вопрос(7)

Ваш ответ на вопрос