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.