SQL Server SÉLECTIONNEZ états provoquer le blocage

Nous utilisons une base de données SQL Server 2005 (pas de contrôle des versions de ligne) avec un énorme instruction select, et nous le voyons bloquer les autres états de l'exécution (vu à l'aide de sp_who2). Je ne savais pas que les instructions SELECT pourrait provoquer le blocage - est-ce que je peux faire pour atténuer ce risque?

  • Utilisez-vous de la hausse des niveaux d'isolation par tout hasard, comme la lecture répétée ou sérialisable? Certains ADO et CLR composants se faufiler dans searializable sans votre consentement explicite... qu'est-Ce que le blocage de ressources sur (touche, la gamme, table) ?
  • Je ne suis pas en spécifiant le niveau d'isolation. Est-il un moyen de connaître le niveau d'isolation est en cours d'utilisation?
  • Oui, découvrez sys.dm_exec_sessions. transaction_isolation_level colonne.
  • Il serait utile d'avoir de la description des tables et des données. Si vous pouvez optimiser la requête puis les serrures seront évidemment être tenu pour une durée plus courte. Une autre option, si elle est en lecture seule opération est de récupérer l'ensemble des données dont vous avez besoin pour fonctionner sur les tables temporaires, puis requête sur les tables temporaires. Vous pouvez remplir l'ensemble de vos tables temporaires en vertu d'un haut niveau d'isolation pour garantir une transactionnel "instantané" des tables live.