Li que, se eu usar IsolationLevel.ReadUncommitted, a consulta não deve emitir nenhum bloqueio. No entanto, quando testei isso, vi o seguinte bloqueio:
Resource_Type: HOBT
Request_Mode: S (compartilhado)
O que é um bloqueio HOBT? Algo relacionado ao HBT (bloqueio de Heap ou Árvore Binária)?
Por que eu ainda receberia uma trava em S?
Como evito o bloqueio compartilhado ao consultar sem ativar a opção de captura instantânea no nível de isolamento?
Estou testando isso no SQLServer 2008 e a opção de instantâneo está desativada. A consulta realiza apenas uma seleção.
Percebo que o Sch-S é necessário, embora o SQL Server pareça não estar aparecendo na minha consulta de bloqueio. Como ele ainda gera um bloqueio compartilhado? De acordo com:
DEFINIR O NÍVEL DE ISOLAMENTO DA TRANSAÇÃO (Transact-SQL)
As transações em execução no
READ UNCOMMITTED
nível não emitem bloqueios compartilhados para impedir que outras transações modifiquem os dados lidos pela transação atual.
Então, eu estou um pouco confuso.