¿Cuáles son las reglas de alcance para los niveles de aislamiento de transacciones en SQL Server 2005? Sé lo que significan los diferentes niveles, pero no cómo aplicarlos correctamente fuera de un script ejecutado manualmente. No puedo encontrar una guía para el uso práctico en el código de calidad de producción.Ámbitos de nivel de aislamiento de transacciones
Obviamente, el alcance comienza cuando se utiliza un comando como este:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Pero ¿dónde termina? Si configuro el nivel iso en un procedimiento almacenado y luego ese proceso llama a otro, ¿el proceso anidado lo hereda? Aún mejor, si escalo el nivel iso dentro del proceso anidado, ¿volverá a funcionar en el proceso de llamada? ¿Los comandos de transacción como BEGIN TRAN, ROLLBACK y COMMIT hacen alguna diferencia?
Cuando una aplicación o un trabajo de agente llama a un proceso almacenado, ¿los cambios de nivel de aislamiento persisten de algún modo? ¿Siempre tengo que volver al valor predeterminado LEER COMPROMETIDO al final de cada proceso?
Lo probaría en diferentes situaciones, pero no sé cómo se define el nivel de aislamiento actual.
El hecho de que el alcance de esto va más allá de la transacción actual (y, debido a la agrupación de conexiones, más allá de la "sesión" actual) puede quemarlo. Ver [esta publicación] (http://www.codeducky.org/mysterious-deadlocks-leaking-isolation-levels/) Escribí sobre el tema. – ChaseMedallion