Ho letto che se uso IsolationLevel.ReadUncommitted, la query non dovrebbe emettere alcun blocco. Tuttavia, quando ho provato questo, ho visto il seguente blocco:
Tipo risorsa: HOBT
Request_Mode: S (condiviso)
Che cos'è un blocco HOBT? Qualcosa correlato a HBT (Heap o Binary Tree lock)?
Perché dovrei ancora ottenere un lucchetto a S?
Come evitare il blocco condiviso durante le query senza attivare l'opzione di snapshot a livello di isolamento?
Sto testando questo su SQL Server 2008 e l'opzione di snapshot è disattivata. La query esegue solo una selezione.
Vedo che Sch-S è richiesto, sebbene SQL Server non lo mostri nella mia query di blocco. Come mai emette ancora un blocco condiviso? Secondo:
IMPOSTA LIVELLO ISOLAMENTO TRANSAZIONE (Transact-SQL)
Le transazioni in esecuzione a
READ UNCOMMITTED
livello non emettono blocchi condivisi per impedire ad altre transazioni di modificare i dati letti dalla transazione corrente.
Quindi sono un po 'confuso.