transacciones

22/02/2006 - 18:49 por Oscar | Informe spam
Hola

Llevo ya tiempo planteando esta pregunta en el foro, y me estoy volviendo
loco porque no encuentro la solución.

Como puedo crear un bloqueo desde vb .net a sql server 2000, de tal forma
que me bloquee únicamente en sólo escritura las lineas afectadas por la
transacción. Lo he intentado con todos los IsolationLevel de transaccion en
vb .net, pero sigue haciendo un bloqueo exclusivo, tanto de lectura como de
escritura. Tambien lo he intentado con WITH (ROWLOCK) en la sentencia
UPDATE, pero tampoco. El caso es que cuando ejecuto cualquier sentencia
update o insert desde la transacción, me bloquea toda la tabla, es decir, si
me voy al sql e intento abrir la tabla, no me deja..
COMO ES POSIBLE QUE NO EXISTA UN BLOQUEO POR REGISTRO???

Saludos, Oscar

Preguntas similare

Leer las respuestas

#1 Isaias
22/02/2006 - 19:03 | Informe spam
No es un bloqueo de TODA la tabla, es un bloque de un BLOQUE de paginas.

En mi caso, si deseo bloquear un SOLO REGISTRO, coloco un campo bit, cada
que un usuario (tengo 500 usuarios simultaneos), toma un registro, lo
actualizo en 1, cada que el usuario "lo suelta", lo actualizo en 0 (cero).

Si se rompe la conexion, valido primero (antes de tomar el registro), si el
usuario tiene registros "tomados", de ser cierto, le regreso dicho registro.

Hasta hoy, no he tenido problemas de DEAD LOCK
Saludos
IIslas


"Oscar" escribió:

Hola

Llevo ya tiempo planteando esta pregunta en el foro, y me estoy volviendo
loco porque no encuentro la solución.

Como puedo crear un bloqueo desde vb .net a sql server 2000, de tal forma
que me bloquee únicamente en sólo escritura las lineas afectadas por la
transacción. Lo he intentado con todos los IsolationLevel de transaccion en
vb .net, pero sigue haciendo un bloqueo exclusivo, tanto de lectura como de
escritura. Tambien lo he intentado con WITH (ROWLOCK) en la sentencia
UPDATE, pero tampoco. El caso es que cuando ejecuto cualquier sentencia
update o insert desde la transacción, me bloquea toda la tabla, es decir, si
me voy al sql e intento abrir la tabla, no me deja..
COMO ES POSIBLE QUE NO EXISTA UN BLOQUEO POR REGISTRO???

Saludos, Oscar



Respuesta Responder a este mensaje
#2 Victor Koch
22/02/2006 - 20:26 | Informe spam
Hola Isaias,

Si solo guardas en un campo bit 1 o 0, ¿ como sabes que usuario bloqueo el
registro para que solo ese lo desbloquee cuando se restaura la conexión ?.

Un saludo, Víctor Koch.


"Isaias" escribió en el mensaje
news:
No es un bloqueo de TODA la tabla, es un bloque de un BLOQUE de paginas.

En mi caso, si deseo bloquear un SOLO REGISTRO, coloco un campo bit, cada
que un usuario (tengo 500 usuarios simultaneos), toma un registro, lo
actualizo en 1, cada que el usuario "lo suelta", lo actualizo en 0 (cero).

Si se rompe la conexion, valido primero (antes de tomar el registro), si


el
usuario tiene registros "tomados", de ser cierto, le regreso dicho


registro.

Hasta hoy, no he tenido problemas de DEAD LOCK
Saludos
IIslas


"Oscar" escribió:

> Hola
>
> Llevo ya tiempo planteando esta pregunta en el foro, y me estoy


volviendo
> loco porque no encuentro la solución.
>
> Como puedo crear un bloqueo desde vb .net a sql server 2000, de tal


forma
> que me bloquee únicamente en sólo escritura las lineas afectadas por la
> transacción. Lo he intentado con todos los IsolationLevel de transaccion


en
> vb .net, pero sigue haciendo un bloqueo exclusivo, tanto de lectura como


de
> escritura. Tambien lo he intentado con WITH (ROWLOCK) en la sentencia
> UPDATE, pero tampoco. El caso es que cuando ejecuto cualquier sentencia
> update o insert desde la transacción, me bloquea toda la tabla, es


decir, si
> me voy al sql e intento abrir la tabla, no me deja..
> COMO ES POSIBLE QUE NO EXISTA UN BLOQUEO POR REGISTRO???
>
> Saludos, Oscar
>
>
>
Respuesta Responder a este mensaje
#3 Isaias
22/02/2006 - 21:42 | Informe spam
Pequeño detalle, en otra columna guardo el ID del Usuario..aunque
viendolo bien, dicho campo me puede servir para saber si esta BLOQUEADO,
quien lo bloqueo.

Saludos
Saludos
IIslas


"Victor Koch" escribió:

Hola Isaias,

Si solo guardas en un campo bit 1 o 0, ¿ como sabes que usuario bloqueo el
registro para que solo ese lo desbloquee cuando se restaura la conexión ?.

Un saludo, Víctor Koch.


"Isaias" escribió en el mensaje
news:
> No es un bloqueo de TODA la tabla, es un bloque de un BLOQUE de paginas.
>
> En mi caso, si deseo bloquear un SOLO REGISTRO, coloco un campo bit, cada
> que un usuario (tengo 500 usuarios simultaneos), toma un registro, lo
> actualizo en 1, cada que el usuario "lo suelta", lo actualizo en 0 (cero).
>
> Si se rompe la conexion, valido primero (antes de tomar el registro), si
el
> usuario tiene registros "tomados", de ser cierto, le regreso dicho
registro.
>
> Hasta hoy, no he tenido problemas de DEAD LOCK
> Saludos
> IIslas
>
>
> "Oscar" escribió:
>
> > Hola
> >
> > Llevo ya tiempo planteando esta pregunta en el foro, y me estoy
volviendo
> > loco porque no encuentro la solución.
> >
> > Como puedo crear un bloqueo desde vb .net a sql server 2000, de tal
forma
> > que me bloquee únicamente en sólo escritura las lineas afectadas por la
> > transacción. Lo he intentado con todos los IsolationLevel de transaccion
en
> > vb .net, pero sigue haciendo un bloqueo exclusivo, tanto de lectura como
de
> > escritura. Tambien lo he intentado con WITH (ROWLOCK) en la sentencia
> > UPDATE, pero tampoco. El caso es que cuando ejecuto cualquier sentencia
> > update o insert desde la transacción, me bloquea toda la tabla, es
decir, si
> > me voy al sql e intento abrir la tabla, no me deja..
> > COMO ES POSIBLE QUE NO EXISTA UN BLOQUEO POR REGISTRO???
> >
> > Saludos, Oscar
> >
> >
> >



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida