Nie możesz zapobiec brudnym odczytom. Pisarze stosują ekskluzywne blokady, aby uniemożliwić uczciwe, popełnione czytanie, czytanie. Ale nie ma nic możesz zrobić, aby zapobiec brudnym odczytom. Brudny czytelnik musi przestać robić brudne odczyty, kropka.
Zakładając, że kod, który sonduje tabelę Customer, znajduje się pod Twoją kontrolą, rozwiązaniem jest usunięcie wskazówki dotyczącej brudnego odczytu z zapytania. Spowoduje to prawdopodobnie spory, ponieważ odpytywanie będzie teraz blokować zapisy. Najlepszym rozwiązaniem jest włączenie wersjonowania wierszy :
ALTER DATABASE [<DBNAME>] SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE [<DBNAME>] SET READ_COMMITTED_SNAPSHOT ON;
Następnie po prostu odpytaj klienta jako zwykłe zapytanie, bez żadnych wskazówek. Twoja sonda nie zablokuje się za zapisami, ponieważ rozpocznie się wersjonowanie wierszy i przekieruje skanowanie zapytania do niezablokowanej wersji wiersza sprzed aktualizacji.
Jeszcze jedna uwaga:odpytywanie co 500 ms? Być może powinieneś użyć mechanizmu powiadamiania o zapytaniach, aby unieważnić swoje pamięci podręczne, zobacz Tajemnica Powiadomienie .