Ich denke, es ist unter bestimmten Umständen in Ordnung , solange Sie die Konsequenzen akzeptieren und keine anderen Optionen haben.
Für andere Optionen würde ich die Leute dazu drängen, Read Committed Snapshot Isolation (RCSI) für neue Anwendungen oder SNAPSHOT ISOLATION (SI) für ältere Anwendungen zu verwenden, bei denen Sie mit RCSI nicht einfach die gesamte Codebasis auf Rennbedingungen testen können.
Diese passen jedoch möglicherweise nicht gut zusammen. Möglicherweise müssen Sie zusätzliche Zeit damit verbringen, Tempdb zu lieben und zu pflegen, und sicherstellen, dass niemand eine offene Transaktion hinterlässt, durch die der Versionsspeicher (und Tempdb) wachsen und die Festplatte füllen.
Wenn Sie keinen DBA haben oder jemanden, dessen Aufgabe es ist, Ihren SQL Server zu überwachen und zu verwalten, können diese Optionen gefährlich sein. Im Allgemeinen hat nicht jeder die volle Kontrolle über den Code, der an seinen Server gesendet wird, wo er die Verbindungszeichenfolge oder den Code ändern kann, um nach SI für Problemabfragen zu fragen.
Außerdem haben die meisten Benutzer keine Sperrprobleme mit ihrer gesamten Anwendung . Sie haben Probleme mit der Berichterstellung über OLTP-Daten. Wenn Sie die Kompromisse von NOLOCK / RU im Austausch für Berichte akzeptieren können, die nicht von Autoren blockiert wurden, entscheiden Sie sich dafür.
Stellen Sie einfach sicher, dass Sie verstehen, was das bedeutet. Dies bedeutet nicht, dass Ihre Abfrage keine Sperren akzeptiert, sondern dass die von anderen Abfragen aufgehobenen Sperren nicht berücksichtigt werden.
Und natürlich, wenn Ihr Problem das Sperren von Writern / Writern ist, ist die einzige Option, die helfen wird, SI, aber es würde unglaublich viel Entwicklerarbeit erfordern, um dies mit Fehlerbehandlung usw. richtig zu implementieren.