Transacciones y bloqueos

01/09/2003 - 10:43 por Marc | Informe spam
Buenas,

Tengo un problemilla con el tema de Transacciones con ADO.NET, resulta que
tengo una serie de sentencias SQL q paso por parámetro a una función la cual
me crea una transacción para q se ejecuten estas sentencias en bloque. Por
ejemplo un delete y una serie de inserts.

Si realizo la llamada a esta función realmente no me da ningún tipo de
problema, pero si pongo un breakpoint situándolo en el ExecuteNonQuery al
añadirlas a la transacción, y tras el primer insert modifico la tabla de la
BD, entonces compruebo que me ha bloqueado la tabla. Cosa q no quiero q
ocurra.

En mi código inicializo una transacción de esta manera:

myTrans = oConn.BeginTransaction(IsolationLevel.ReadUncommitted);

Si alguien se hubiera peleado con el tema, me interesaría q me comunicara
como he de hacerlo para q no me bloquee los registros de la BD.

Gracias de antemano
 

Leer las respuestas

#1 Juan Carlos Vázquez Bohabén
01/09/2003 - 12:38 | Informe spam
No se si me equivoco, pero si pruebas a no realizar la transacción, te
pasaría lo mismo. Los bloqueos los puede realizar el Gestor de la DB cuando
detecta que se produce alguna modificación.
Podrías intentar abrir y cerrar una transacción cada vez que hagas una
modificación (si lo haces por bloques), una para el insert, otra para el
delete

A mi me pasó algo parecido al crear una tabla temporal, la cual quedaba
bloqueada y no podía hacer nada con ella. La solución fue (un poco drástica
a lo mejor) crear una nueva conexión y una nueva transacción, crear la
tabla, hacer commit y cerrar la conexión.

No se si te servirá de algo esto

"Marc" escribió en el mensaje
news:
Buenas,

Tengo un problemilla con el tema de Transacciones con ADO.NET, resulta que
tengo una serie de sentencias SQL q paso por parámetro a una función la


cual
me crea una transacción para q se ejecuten estas sentencias en bloque. Por
ejemplo un delete y una serie de inserts.

Si realizo la llamada a esta función realmente no me da ningún tipo de
problema, pero si pongo un breakpoint situándolo en el ExecuteNonQuery al
añadirlas a la transacción, y tras el primer insert modifico la tabla de


la
BD, entonces compruebo que me ha bloqueado la tabla. Cosa q no quiero q
ocurra.

En mi código inicializo una transacción de esta manera:

myTrans = oConn.BeginTransaction(IsolationLevel.ReadUncommitted);

Si alguien se hubiera peleado con el tema, me interesaría q me comunicara
como he de hacerlo para q no me bloquee los registros de la BD.

Gracias de antemano


Preguntas similares