Potrzebuję blokowania na poziomie wiersza

To jest rozszerzenie doCzy można wymusić blokowanie poziomu wiersza w programie SQL Server?. Oto przypadek użycia

Mam tabelę kont z numerami kont, saldami itd. Ta tabela jest używana przez wiele aplikacji. Jest całkiem możliwe, że podczas modyfikowania konta ktoś inny modyfikuje inne konto. Oczekiwane zachowanie polega na tym, że zablokowałbym moje konto (ROW), a inne użycie zablokowało jego (inny ROW).

Ale SQL Server 2008 R2 zwiększa to blokowanie do strony / tabeli, a drugi użytkownik otrzymuje wyjątek limitu czasu. Wypróbowałem wszystkie rozwiązania wymienione w przywoływanym pytaniu, ale nic nie działa.

Jak zmusić program SQL Server do zablokowania tylko blokady na poziomie wiersza LUB jak mogę zmodyfikować ten model w taki sposób, aby działał z blokowaniem strony / tabeli?

EDYTOWAĆ Aktualizacja jest ukierunkowana na pojedynczy rekord za pomocą PK i jest indeksowana, więc tylko JEDEN ROW jest aktualizowany / blokowany, a proces trwa nie dłużej niż minutę

Edytować Teraz wygląda na to, że dzieje się coś dziwnego. Używam biblioteki ORM dla DAL, która otwiera więcej niż jedno połączenie i podniosłem pytanie do ich wsparcia. Ale dla celów testowych otworzyłem dwie sesje na narzędziu do kwerend i wykonałem następujące czynności

Session # 1
begin tran
UPDATE myTable SET COL_1 = COL_1 WHERE COL_1 = 101;

Session # 2
SELECT COL_1 FROM myTable WHERE COL_1 = 101;

Zapytanie w Sesji 2 razy! Zapytania o inne wartościCOL_1 działają dobrze. Wygląda na to, że SELECT jest zablokowany dla sesji, jeśli ten sam rekord jest w trybie edycji w innej sesji.

Chociaż Oracle obsługuje wybór wiersza (z domyślnymi parametrami / bez słów kluczowych), podczas gdy jest modyfikowany przez inną sesję, SQL Server nie (z domyślnymi parametrami / bez słów kluczowych), więc wydaje się, że problem dotyczy biblioteki.

questionAnswers(2)

yourAnswerToTheQuestion