Ver Mensaje Individual
  #5  
Antiguo 20-09-2004
Alessan Alessan is offline
Registrado
 
Registrado: jun 2004
Posts: 5
Reputación: 0
Alessan Va por buen camino
Hola,

Se que eso es lo que hace una transaccion, el problema es que se me bloquea la tabla mientras que la transaccion esta activa.

Puedo leer los registros usando NOLOCK en la clausula FROM de la consulta de seleccion, pero lo que me gustaría es poder actualizar otros registros (bloqueo a nivel de fila) mientras la transaccion aun no terminó.

El programa ejecuta estas transacciones unas 70 veces por minuto en hilos diferentes, pero no puede actualizar un registro hasta que termina la transaccion anterior..... ese es el problema (la transaccion queda en cola esperando que finalize la anterior).

Supuestamente con la Clausula WITH (ROWLOCK) deberia bloquear solo los registros utilizados en la consulta de actualizacion, pero me bloquea la tabla completa para escritura.

Es decir si ejecuto:

Código SQL [-]
  SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
  go
  begin tran
  update AA with (rowlock)
  set IDAA = '1' 
  where IDAA = '29'

y sin finalizar la transaccion ejecuto:

Código SQL [-]
  SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
  go
  begin tran
  update AA with (rowlock)
  set IDAA = '2' 
  where IDAA = '30'

Siendo IDAA clave primaria, la segunda consulta no se ejcuta mientras no haga un commit o un rollback de la primera transaccion.

¿Alguna Sugerencia?

Un Saludo.

Última edición por Alessan fecha: 20-09-2004 a las 17:19:11.
Responder Con Cita