Myślę, że w pewnych okolicznościach jest w porządku , o ile akceptujesz konsekwencje i nie masz innych opcji.
W przypadku innych opcji zachęcałbym ludzi do korzystania z Read Committed Snapshot Isolation (RCSI) dla nowych aplikacji lub SNAPSHOT ISOLATION (SI) dla starszych aplikacji, gdzie nie można łatwo przetestować całej bazy kodu pod kątem warunków wyścigu z RCSI.
Mogą to jednak nie być dobre dopasowanie. Być może będziesz musiał poświęcić trochę czasu na kochanie i dbanie o tempdb oraz upewnienie się, że nikt nie pozostawia otwartej transakcji, która powoduje, że magazyn wersji (i tempdb) rośnie i zapełnia dysk.
Jeśli nie masz DBA lub osoby, której zadaniem jest monitorowanie i zarządzanie SQL Server, te opcje mogą być niebezpieczne. Mówiąc bardziej ogólnie, nie wszyscy mają pełną kontrolę nad kodem przechodzącym na serwer, na którym mogą zmienić parametry połączenia lub kod, aby poprosić SI o zapytania dotyczące problemów.
Poza tym większość ludzi nie ma problemów z blokowaniem całej aplikacji . Mają problemy z raportowaniem danych OLTP. Jeśli możesz zaakceptować kompromisy NOLOCK / RU w zamian za te raporty, które nie są blokowane przez pisarzy, idź do niego.
Upewnij się, że rozumiesz, co to znaczy. Nie oznacza to, że twoje zapytanie nie przyjmuje żadnych blokad, oznacza, że nie respektuje blokad usuniętych przez inne zapytania.
I oczywiście, jeśli twoim problemem jest program zapisujący / blokujący zapisujący, jedyną opcją, która pomoże, jest SI, ale zajmie to niewiarygodną ilość pracy programisty, aby poprawnie wdrożyć to z obsługą błędów itp.