Вам необходимо использовать одновременно два табличных указания
WITH(TABLOCKX, HOLDLOCK)
TABLOCKX - монопольно блокирует таблицу, HOLDLOCK - включает режим SERIALIZABLE, что включает в себя следующее:
Запросы не могут читать те данные, которые были изменены, но еще не закоммичены другими транзакциями.
Другие транзакции не могут изменять данные, которые были прочитаны текущей транзакцией, пока текущая транзакция не завершится.
Другие транзакции не могут вставлять новые строки со значениями ключей, которые попадают в диапазон ключей, считываемых любыми запросами в текущей транзакции, до тех пор, пока текущая транзакция не завершится.
https://docs.microsoft.com/en-us/sql/t-sql/stateme...