Você não pode evitar leituras sujas. Os escritores usam bloqueios exclusivos para evitar leituras honestas e confirmadas. Mas não há nada você pode fazer para evitar leituras sujas. O leitor sujo tem que parar de fazer leituras sujas, ponto final.
Supondo que o código que pesquisa a tabela Customer esteja sob seu controle, a solução é remover a dica de leitura suja da consulta. Isso provavelmente causará contenção, já que a sondagem agora bloqueará as gravações. A melhor solução para isso é habilitar o versão de linha :
ALTER DATABASE [<DBNAME>] SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE [<DBNAME>] SET READ_COMMITTED_SNAPSHOT ON;
Em seguida, simplesmente faça uma pesquisa do Cliente como uma consulta normal, sem nenhuma dica. Sua enquete não bloqueará gravações, pois o controle de versão de linha será ativado e redirecionará a verificação de consulta para uma versão pré-atualização e não bloqueada da linha.
Mais uma nota:sondagem a cada 500ms? Talvez você deva usar um mecanismo de notificação de consulta para invalidar seus caches, consulte The Mysterious Notificação .