Według MSDN:
http://msdn.microsoft.com/en-us/library/ms191242.aspx
Gdy opcje bazy danych ODCZYTAJ ZATWIERDZONY ZDJĘCIE lub ZEZWÓL NA IZOLACJĘ ZDJĘĆ są WŁĄCZONE, kopie logiczne (wersje) są zachowywane dla wszystkich modyfikacji danych wykonywanych w bazie danych. Za każdym razem, gdy wiersz jest modyfikowany przez określoną transakcję, wystąpienie aparatu bazy danych przechowuje wersję wcześniej zatwierdzonego obrazu wiersza w tempdb. Każda wersja jest oznaczona numerem sekwencji transakcji, która dokonała zmiany. Wersje zmodyfikowanych wierszy są łączone za pomocą listy linków. Najnowsza wartość wiersza jest zawsze przechowywana w bieżącej bazie danych i połączona z wersjonowanymi wierszami przechowywanymi w tempdb.
W przypadku krótkotrwałych transakcji niechęć do zmodyfikowanego wiersza może zostać zbuforowana w puli buforów bez zapisywania w plikach dyskowych bazy danych tempdb. Jeśli potrzeba wersjonowanego wiersza jest krótkotrwała, zostanie po prostu usunięta z puli buforów i niekoniecznie pociągnie za sobą obciążenie we/wy.
Wydaje się, że za dodatkowe obciążenie występuje niewielka obniżka wydajności, ale może być ona znikoma. Powinniśmy przetestować, aby się upewnić.
Spróbuj ustawić tę opcję i USUŃ wszystkie NOLOCKs z zapytań o kod, chyba że jest to naprawdę konieczne. NOLOCKs lub użycie globalnych metod w obsłudze kontekstu bazy danych w celu zwalczania poziomów izolacji transakcji w bazie danych to pomoce w rozwiązaniu problemu. NOLOCKS zamaskuje fundamentalne problemy z naszą warstwą danych i prawdopodobnie doprowadzi do wybrania niewiarygodnych danych, gdzie automatyczne wybieranie / aktualizowanie wersji wiersza wydaje się być rozwiązaniem.
ALTER Database [StackOverflow.Beta] SET READ_COMMITTED_SNAPSHOT ON