J'ai lu que si j'utilise IsolationLevel.ReadUncommitted, la requête ne devrait émettre aucun verrou. Cependant, lorsque j'ai testé cela, j'ai vu le verrou suivant:
Resource_Type: HOBT
Request_Mode: S (partagé)
Qu'est-ce qu'un verrou HOBT? Quelque chose en rapport avec HBT (Heap ou Binary Tree lock)?
Pourquoi devrais-je toujours obtenir un verrou S?
Comment éviter le verrouillage partagé lors d'une requête sans activer l'option d'instantané de niveau d'isolement?
Je teste cela sur SQLServer 2008 et l'option d'instantané est désactivée. La requête effectue uniquement une sélection.
Je peux voir que Sch-S est requis, bien que SQL Server ne semble pas l'afficher dans ma requête de verrouillage. Comment se fait-il qu'il émette toujours un verrou partagé? Selon:
DÉFINIR LE NIVEAU D'ISOLEMENT DE TRANSACTION (Transact-SQL)
Les transactions exécutées au
READ UNCOMMITTED
niveau n'émettent pas de verrous partagés pour empêcher d'autres transactions de modifier les données lues par la transaction en cours.
Je suis donc un peu confus.