El artículo en línea de MSDN " Aislamiento de instantáneas en SQL Server " establece:
- "Un nivel de aislamiento tiene un alcance para toda la conexión, y una vez configurado para una conexión con la instrucción SET TRANSACTION ISOLATION LEVEL, permanece vigente hasta que se cierre la conexión o se establezca otro nivel de aislamiento. Cuando una conexión se cierra y se devuelve al grupo , se retiene el nivel de aislamiento de la última instrucción SET TRANSACTION ISOLATION LEVEL . Las conexiones posteriores que reutilizan una conexión agrupada utilizan el nivel de aislamiento que estaba vigente en el momento en que se agrupa la conexión "
¿No es un párrafo autocontradictorio ("hasta" vs. "retenido")?
Luego, si " se retiene el nivel de aislamiento de la última instrucción SET TRANSACTION ISOLATION LEVEL " después de cerrar la conexión y devolverla a un grupo, cómo debe entenderse:
- que el nivel de aislamiento predeterminado tendrá un valor arbitrario (diferentes conexiones en el grupo tendrán diferentes niveles de aislamiento y su valor dependerá de la conexión que se vuelva a abrir)?
- o todos los valores predeterminados en todas las conexiones en el grupo se cambiarán a la última? pero de nuevo bastante desconocido de antemano?
fuente
No para mí, pero puedo ver que hay otras formas de leerlo. Si desea actualizar la documentación para aclararla, el lugar adecuado para solicitarla es en Microsoft Connect . La gente aquí no mantiene la documentación de Microsoft.
Si está reutilizando una conexión agrupada, entonces sí, el nivel de aislamiento "preexistente" es el que estaba vigente la última vez que se cerró la conexión agrupada. La mejor práctica es establecer explícitamente el nivel de aislamiento necesario al conectarse.
No.
fuente
SQL Server 2014 ahora restablece el nivel de aislamiento de las conexiones agrupadas para la mayoría de las versiones del protocolo TDS. Las versiones anteriores de SQL Server no restablecían el nivel de aislamiento.
fuente