Tabla bloqueada dentr de un atransaccion

29/01/2009 - 23:20 por Saga | Informe spam
Saludos!

Estoy usando VB6 SP5, ADO 2.7 y SQL Server 2000

Tengo una rutina semejante a los siguiente

Conecto al servidor

Begin transaccion

Borro registros de una tabla (DBConx.Execute SQL)

Borro registros de otra tabla (DBConx.Execute SQL)

Inserto registros nuevos en las tablas

Commit transaccion


El problema es que cuando se ejecuta (por decirlo asi) el primer DELETE para borrar
los registros la tabla se bloquea (locked), no dejando que otros usuarios entren a
areas especificas de la aplicacion que usa esa misma tabla. La tabla se desbloquea
cuando se ejecuta el "commit transaccion".

Estoy usando los metods BeginTrans y CommitTrans del objecto de conexion.

Probe abriendo la conexion al servidor usando ambos tipos de cursores: UseClient
y UseServer, pero el comportamiento es igual.

Este comportamiento es igual si uso ADO o RDO. Estoy buscando en Google,
pero hasta ahora no he encontrado anda. Alguien tendra experiencia con esto
para que me pueda orientar? Gracias! Saga

Soluciones Para Mejorar
www.reset.com.mx

Preguntas similare

Leer las respuestas

#6 Saga
30/01/2009 - 21:50 | Informe spam
Gracias por la aportacion.

Para decir verdad, no se cuantos registros elimine, pero como la pantalla
es para administrar entregas de paquetes en una ruta, no creo que sean
mas de 500 (y eso ya es exagerando).

Siendo viernes y para amolar hubo despido de un recurso humano, asi que
no traigo la cabeza bien puesta y este asunto me ha causado mas problema
de lo que inicialmente pense.

Saludos, Saga
Soluciones Para Mejorar
www.reset.com.mx


"Jesús" wrote in message
news:%
Terner un índice sobre esas dos columnas será bueno, pero

¿Y cuantos registros elimina?

Porque si elimina más de un cierto número (creo que son 9000) se producirá un "lock escalation"
que hará que se bloquee toda la tabla.

Jesús López
www.soldiq.com



"Saga" escribió en el mensaje de noticias
news:
Gracias por tu ayuda.

De hecho, el estatuto DELETE es algo asi:

delete from MiTabla where CteId=XYZ and Fecha=XYZ

Segun entiendo, debo de poner un indice en la campos CteId y Fecha?

Gacias de nuevo, Saga
Soluciones Para Mejorar
www.reset.com.mx



"Jose Mariano Alvarez" wrote in message
news:
Debes borrar menos registros por vez y acceder por índices para que el resto no se vea afectado.


Saludos


Ing. Jose Mariano Alvarez
SQLTotal Consulting

(Cambia los ceros por O y saca lo que sobra)

Este mensaje se proporciona tal como es, SIN GARANTIAS de ninguna clase. Por favor tratar de
indicar la versión de SQL y Service Pack. La inclusión de (CREATE, INSERTS, etc.) para poder
reproducir el problema también ayuda.










"Saga" wrote in message news:uuZeP$
Saludos!

Estoy usando VB6 SP5, ADO 2.7 y SQL Server 2000

Tengo una rutina semejante a los siguiente

Conecto al servidor

Begin transaccion

Borro registros de una tabla (DBConx.Execute SQL)

Borro registros de otra tabla (DBConx.Execute SQL)

Inserto registros nuevos en las tablas

Commit transaccion


El problema es que cuando se ejecuta (por decirlo asi) el primer DELETE para borrar
los registros la tabla se bloquea (locked), no dejando que otros usuarios entren a
areas especificas de la aplicacion que usa esa misma tabla. La tabla se desbloquea
cuando se ejecuta el "commit transaccion".

Estoy usando los metods BeginTrans y CommitTrans del objecto de conexion.

Probe abriendo la conexion al servidor usando ambos tipos de cursores: UseClient
y UseServer, pero el comportamiento es igual.

Este comportamiento es igual si uso ADO o RDO. Estoy buscando en Google,
pero hasta ahora no he encontrado anda. Alguien tendra experiencia con esto
para que me pueda orientar? Gracias! Saga

Soluciones Para Mejorar
www.reset.com.mx











Respuesta Responder a este mensaje
#7 Saga
30/01/2009 - 23:12 | Informe spam
Si tiene un indice unico. Le agregue otro indice usando los dos campos involucrados
en el WHERE del delete, pero aun no he encontrado como resolver este problema.

Gracias, Saga
Soluciones Para Mejorar
www.reset.com.mx



"Victor Koch" <v i c t o r (arroba)correo(punto)waldbott(punto)com(punto)ar> wrote in message
news:
Hola Saga,

La tabla a la cual haces el DELETE tiene definido un índice único, porque si no lo tiene el motor
de SQL puede llegar a bloquear toda la tabla.

Un Saludo, Víctor Koch



"Saga" escribió en el mensaje
news:
Gracias por tu ayuda.

De hecho, el estatuto DELETE es algo asi:

delete from MiTabla where CteId=XYZ and Fecha=XYZ

Segun entiendo, debo de poner un indice en la campos CteId y Fecha?

Gacias de nuevo, Saga
Soluciones Para Mejorar
www.reset.com.mx



"Jose Mariano Alvarez" wrote in message
news:
Debes borrar menos registros por vez y acceder por índices para que el resto no se vea afectado.


Saludos


Ing. Jose Mariano Alvarez
SQLTotal Consulting

(Cambia los ceros por O y saca lo que sobra)

Este mensaje se proporciona tal como es, SIN GARANTIAS de ninguna clase. Por favor tratar de
indicar la versión de SQL y Service Pack. La inclusión de (CREATE, INSERTS, etc.) para poder
reproducir el problema también ayuda.










"Saga" wrote in message news:uuZeP$
Saludos!

Estoy usando VB6 SP5, ADO 2.7 y SQL Server 2000

Tengo una rutina semejante a los siguiente

Conecto al servidor

Begin transaccion

Borro registros de una tabla (DBConx.Execute SQL)

Borro registros de otra tabla (DBConx.Execute SQL)

Inserto registros nuevos en las tablas

Commit transaccion


El problema es que cuando se ejecuta (por decirlo asi) el primer DELETE para borrar
los registros la tabla se bloquea (locked), no dejando que otros usuarios entren a
areas especificas de la aplicacion que usa esa misma tabla. La tabla se desbloquea
cuando se ejecuta el "commit transaccion".

Estoy usando los metods BeginTrans y CommitTrans del objecto de conexion.

Probe abriendo la conexion al servidor usando ambos tipos de cursores: UseClient
y UseServer, pero el comportamiento es igual.

Este comportamiento es igual si uso ADO o RDO. Estoy buscando en Google,
pero hasta ahora no he encontrado anda. Alguien tendra experiencia con esto
para que me pueda orientar? Gracias! Saga

Soluciones Para Mejorar
www.reset.com.mx












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