Je pense que c'est bien dans certaines circonstances, tant que vous acceptez les conséquences et que vous n'avez pas d'autres options.
Pour d'autres options, je pousserais les gens à utiliser Read Committed Snapshot Isolation (RCSI) pour de nouvelles applications, ou SNAPSHOT ISOLATION (SI) pour les applications plus anciennes, où vous ne pouvez pas facilement tester la base de code entière pour les conditions de course avec RCSI.
Cependant, cela pourrait ne pas convenir. Vous devrez peut-être passer un peu plus de temps à aimer et à prendre soin de tempdb, et à vous assurer que personne ne laisse une transaction ouverte qui fait grandir le magasin de versions (et tempdb) et remplir le disque.
Si vous ne disposez pas d'un administrateur de base de données ou d'une personne dont le travail consiste à surveiller et à gérer votre serveur SQL, ces options peuvent être périlleuses. Plus généralement, tout le monde n'a pas le contrôle total du code allant sur son serveur où il peut modifier la chaîne ou le code de connexion pour demander SI pour les requêtes problématiques.
En plus de cela, la plupart des gens n'ont pas de problèmes de verrouillage avec l' ensemble de leur application . Ils ont des problèmes avec des choses comme les rapports sur les données OLTP. Si vous pouvez accepter les compromis de NOLOCK / RU en échange de ces rapports qui ne sont pas bloqués par les écrivains, allez-y.
Assurez-vous simplement de comprendre ce que cela signifie. Cela ne signifie pas que votre requête ne prend aucun verrou, cela signifie qu'elle ne respecte pas les verrous supprimés par d'autres requêtes.
Et bien sûr, si votre problème est le verrouillage de l'écrivain / écrivain, la seule option qui vous aidera est SI, mais cela prendrait une quantité incroyable de travail de développeur pour l'implémenter correctement avec la gestion des erreurs, etc.