Sua escolha de carregar todos os dados de uma só vez significa muito poucas opções:
- Use sp_getapplock para serializar o acesso por meio do código relevante
- Use TABLOCKX, HOLDLOCK nas leituras em uma transação
Você tem problemas porque
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
afeta apenas o isolamento das fechaduras:você precisa controlar a duração (HOLDLOCK
) e granularidade + modo (TABLOCKX
)