2010-02-01 6 views
0

J'ai un site Web en direct et en cours d'exécution maintenant. J'utilise le Subsonic pour gérer les connexions à la base de données, etc. Je reçois un délai expiré erreur lors de la mise à jour d'une table (disons employé). Quand je vérifie sp_who2, je vois la connexion suspendue pour le PID qui est mise à jour avec un bloc par anothor pid, donc je lance le profileur et découvre quand cette connexion est suspendue, le pid bloqué est une instruction select sur la vue (disons ActiveEmployees, qui est le même que la table mais avec certaines conditions où). Tout le monde sait pourquoi une instruction Select sur la vue peut entraîner un échec lors de la mise à jour. S'il est autre (comme sélectionner échoue en raison de mettre à jour) peut être raisonnable. Y a-t-il un moyen pour moi de faire une sélection sur une vue sans verrouiller la table? PS: J'utilise le SQL Server 2005 et le subsonic 2.2.Subsonic: Sélectionnez sur une vue, verrouille la mise à jour de la table?

Répondre

0

Vous pouvez ajouter une indication (nolock) à l'instruction select dans la vue si vous ne vous souciez pas de l'exactitude des données renvoyées (elle renvoie éventuellement des lignes non-validées). Nous avons également rencontré des délais d'attente lorsque les instructions select analysaient une table dans laquelle un autre thread était inséré. J'ai résolu le problème en ajoutant l'index approprié qui est utilisé par notre sélection.

Questions connexes