O artigo online do MSDN " Isolamento de instantâneo no SQL Server " declara:
- "Um nível de isolamento tem escopo em toda a conexão e, uma vez definido para uma conexão com a instrução SET TRANSACTION ISOLATION LEVEL, permanece em vigor até que a conexão seja fechada ou outro nível de isolamento seja definido. Quando uma conexão é fechada e retornada ao pool , o nível de isolamento da última instrução SET TRANSACTION ISOLATION LEVEL é mantido . As conexões subsequentes que reutilizam uma conexão em pool usam o nível de isolamento em vigor no momento em que a conexão é pool "
Não é um parágrafo auto-contraditório ("até" vs. "retido")?
Em seguida, se "o nível de isolamento da última instrução SET TRANSACTION ISOLATION LEVEL for mantido " após fechar a conexão e retorná-la a um pool, como deve ser entendido:
- que o nível de isolamento padrão terá valor arbitrário (conexões diferentes no pool terão níveis de isolamento diferentes e seu valor dependerá da reabertura da conexão)?
- ou todos os valores padrão em todas as conexões no pool serão alterados para o último? mas novamente completamente desconhecido antes da mão?
Não para mim, mas posso ver que há outras maneiras de lê-lo. Se você deseja que a documentação seja atualizada para torná-la mais clara, o local apropriado para solicitá-la é no Microsoft Connect . As pessoas aqui não mantêm a documentação da Microsoft.
Se você estiver reutilizando uma conexão em pool, sim, o nível de isolamento "preexistente" é aquele que estava em vigor quando a conexão em pool foi fechada pela última vez. A melhor prática é definir explicitamente o nível de isolamento necessário ao conectar.
Não.
fonte
O SQL Server 2014 agora redefine o nível de isolamento das conexões em pool para a maioria das versões do protocolo TDS. As versões anteriores do SQL Server não redefiniram o nível de isolamento.
fonte