Tengo un problema de bloqueos que me tiene frito. A ver si a alguien
se le ocurre alguna solucion.
Ejecuto la siguiente sentencia en una conexion desde el analizador de
consultas:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
begin tran
SELECT VinculacionesProyectos.idVinculacionProyecto,
VinculacionesProyectos.idUsuarioModificacion
FROM AplicacionesPresupuestarias INNER JOIN
VinculacionesProyectos ON
AplicacionesPresupuestarias.idAplicacionPresupuestaria VinculacionesProyectos.idAplicacionPresupuestaria
WHERE (AplicacionesPresupuestarias.idAplicacionJuridica = 2)
Y despues la siguiente en otra conexion:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
begin tran
UPDATE VinculacionesProyectos
SET VinculacionesProyectos.fModificacion = getdate()
WHERE VinculacionesProyectos.idVinculacionProyecto = 33
rollback
Hasta que no termina la primera no ejecuta la segunda. Más datos por
si os sirve de pista:
* La primera consulta devuelve datos de las filas distintas a la que
se pretende modificar en la segunda consulta.
* Si cambio el isolation level a read committed en la segunda, sigue
igual
* Si cambio el isolation level a read committed en la primera,
funciona
* Existen índices para las siguientes columnas:
VinculacionesProyectos.idVinculacionProyecto (clustered)
VinculacionesProyectos.idProyecto,
VinculacionesProyectos.idAplicacionPresupuestaria
AplicacionesPresupuestarias.idAplicacionPresupuestaria
* El optimizador de consultas usa el primer y el último indice de
los arriba indicado
* Mi direccion por si acaso: dcanete@sadiel.es
Si necesitais más datos no teneis más que preguntarme.
Gracias por anticipado.
Leer las respuestas