Hola,
Al lanzar una transacción, la tabla se me bloquea
completamenta para modificacion y borrado de registros:
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 que estoy desarrollando ejecuta estas
transacciones entre 70~200 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 y Gracias.
Leer las respuestas