Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2005, 13:26
jsaviola
 
Fecha de Ingreso: abril-2002
Ubicación: Montevideo
Mensajes: 98
Antigüedad: 22 años, 7 meses
Puntos: 0
SQL Server - Lock

Buenas
Mi consulta es sobre trabajar con with(ROWLOCK).
Abriendo 2 SQL Query Analizer (QA1 y QA2) diferentes introduzco las consulta que sigue

QA1

1- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

2- BEGIN TRANSACTION aa

3- SELECT * FROM equipo WITH(ROWLOCK) WHERE equ_id = 134

4- UPDATE equipo
SET
equ_tecnico = 'a',
equ_tipo = 1
WHERE equ_id=134 AND equ_tipo = 0

5- COMMIT TRANSACTION aa


QA2

1- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

2- BEGIN TRANSACTION aa

3- SELECT * FROM equipo WITH(ROWLOCK) WHERE equ_id = 134

4- UPDATE equipo
SET
equ_tecnico = 'b',
equ_tipo = 1
WHERE equ_id=134 AND equ_tipo = 0

5- COMMIT TRANSACTION aa



Por lo que he leído el with(rowlock) bloquea hasta que se commitee la transacción.
Si voy ejecutnado en los 2 Query Analizer paso a paso las consultas (1 1, 2 2, 3 3, 4 4) cuando ejecuto el en QA2 la sentencia 4 llego a un DeadLock. Lo he probado con with(HOLDLOCK, ROWLOCK) y sucede lo mismo.

Por que es esto? No debería qudarse bloqueada la segunda transacción si se ejecutan enforma serializable y isolated?

Gracias,

jsaviola