temps de demande lockout période dépassée - Telerik OpenAccess ORM
-
27-10-2019 - |
Question
J'ai une grande base de données SQL Server 2008 R2 avec de nombreuses lignes qui sont constamment mis à jour. La mise à jour se fait par une application de service de fin arrière qui appelle les procédures stockées. Au sein de l'une de ces procédures stockées il y a un curseur SQL qui Recalcule et les données mises à jour. Cela va tout va bien.
Mais, nos besoins d'applications Web frontend pour la recherche à travers ces lignes et cette recherche parfois des résultats dans un
temps de demande de verrouillage dépassé sur la période. à Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery () ..
Après avoir fait quelques recherches, j'ai trouvé que la meilleure façon de faire cette requête à exécuter sans problème est de le faire fonctionner avec « lu niveau d'isolation non validée ». J'ai trouvé que ce réglage peut être effectué dans les paramètres Telerik OpenAccess, mais c'est un paramètre qui affecte le projet ORM de base de données complète. Ce n'est pas ce que je veux! Je veux que ce niveau pour cette requête uniquement.
Y at-il un moyen de faire cette requête LINQ spécifique pour fonctionner dans ce niveau d'isolement non engagés? Ou pouvons-nous faire de cette seule requête d'utiliser un WITH NOLOCK?
La solution
Utilisez
SET LOCK_TIMEOUT -1
au début de votre requête.
Voir la manuel
de référence Runnung les requêtes dans le niveau d'isolement de read uncommitted
(et en utilisant soupçon NOLOCK) peut causer beaucoup de problèmes étranges, vous devez comprendre clairement pourquoi faites-vous cela et comment il peut interférer avec votre flux de données