Не можете да предотвратите мръсни четения. Писателите приемат ексклузивни ключалки, за да предотвратят честно, ангажирано с четене, четене. Но няма нищо можете да направите, за да предотвратите мръсни четения. Мръсният четец трябва да спре да прави мръсни четения, точка.
Ако приемем, че кодът, който анкетира таблицата Customer, е под ваш контрол, решението е да премахнете подсказката за мръсно четене от заявката. Това вероятно ще предизвика спор, тъй като анкетата сега ще блокира записите. Най-доброто решение за това е да активирате версия на ред :
ALTER DATABASE [<DBNAME>] SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE [<DBNAME>] SET READ_COMMITTED_SNAPSHOT ON;
След това просто анкета от клиента като нормална заявка, без никакви подсказки. Вашата анкета няма да блокира зад писанията, тъй като ще се задейства управлението на версии на ред и ще се пренасочи сканирането на заявката към предварително актуализирана, незаключена версия на реда.
Още една забележка:запитване на всеки 500 ms? Може би трябва да използвате механизъм за известяване на заявки, за да обезсилите кешовете си, вижте The Mysterious Известие .