Compartir a través de


Niveles de aislamiento de las transacciones de cursores

El comportamiento del bloqueo de transacciones de un cursor específico se determina mediante la combinación de los comportamientos de bloqueo de la configuración de simultaneidad del cursor, las sugerencias de bloqueo especificadas en la instrucción SELECT del cursor y las opciones del nivel de aislamiento de transacciones.

MicrosoftSQL Server admite estos niveles de aislamiento para las transacciones de cursores:

  • READ COMMITED (Lectura de confirmadas)
    SQL Server adquiere un bloqueo compartido mientras incluye una fila en un cursor pero libera el bloqueo inmediatamente después de leer la fila. Debido a que las peticiones de bloqueo compartido quedan bloqueadas por un bloqueo exclusivo, se evita que un cursor lea una fila que otra tarea ha actualizado pero que aún no ha confirmado. La lectura de confirmadas es la configuración predeterminada para el nivel de aislamiento de SQL Server y ODBC.

  • READ UNCOMMITED (Lectura de no confirmadas)
    SQL Server no solicita bloqueos mientras incluye una fila en un cursor y no respeta ningún bloqueo exclusivo. Se pueden llenar los cursores con valores que ya se han actualizado pero que aún no se han confirmado. El usuario evita todos los mecanismos de control de bloqueo de transacciones de SQL Server.

  • REPEATABLE READ (Lectura repetible) o SERIALIZABLE
    SQL Server solicita un bloqueo compartido en cada fila a medida que se lee en el cursor, como en READ COMMITTED, pero si el cursor se abre dentro de una transacción, se mantienen los bloqueos compartidos hasta el final de la transacción en lugar de liberarse tras leer la fila. Esto tiene el mismo efecto que especificar HOLDLOCK en una instrucción SELECT.

  • SNAPSHOT (Instantánea)
    SQL Server no solicita bloqueos mientras incluye una fila en un cursor y no respeta ningún bloqueo exclusivo. El cursor se llena con los valores a partir del momento en que se inicia por primera vez la transacción. Se siguen solicitando bloqueos de desplazamiento, con independencia del uso de aislamiento de instantánea.