Bloqueo con BeginTrans

01/04/2005 - 17:08 por Jose Manuel Davila | Informe spam
cuando voy hacer un insert hago esto desde vb

cnn.BeginTrans
insert(informacion)
si todo bien
cnn.CommitTrans
si no
cnn.RollbackTrans

si alguien intenta guardar otra transaccion antes de que suceda cualquiera
de estas dos instrucciones CommitTrans o RollbackTrans, se queda congelado
el sistema supongo que es por en el momento que hago esto cnn.BeginTrans se
genera un tipo de bloqueo.


alguien sabe quer tipo de bloqueo aplica el BeginTrans (registros, paginas,
mas paginas)

y si haber algun parametro que me indique que esta bloqueado, asi puedo
controlar mediante un ciclo el reintentar guardar


saludos
 

Leer las respuestas

#1 Alejandro Mesa
01/04/2005 - 17:43 | Informe spam
Jose Manuel,

Esto pudieras chequearlo se dejas la transaccion abierta por un momento y
vas a QA y ejecutas sp_who2 para ver el @@spid de tu proceso y luego ejecutas
sp_lock ara ver los recursos bloqueados por tu proceso.

Una pregunta, por que encierras un solo insert en una transaccion?, esto
debes hacerlo si estas insertando mas de uno a la misma vez o estas
insertando en diferentes tablas (o insertando / actualizando / borrando) y
quieres que el conjunto de todas las operaciones se traten como una
transaccion. En el caso de una sola operacion esto no es necesario pues si la
operacion falla, sql server automaticamente le hace rollback (al menos que
hayas cambiado el setting de SET IMPLICIT_TRANSACTIONS) y devolvera un error
a la aplicacion cliente.


AMB


"Jose Manuel Davila" wrote:

cuando voy hacer un insert hago esto desde vb

cnn.BeginTrans
insert(informacion)
si todo bien
cnn.CommitTrans
si no
cnn.RollbackTrans

si alguien intenta guardar otra transaccion antes de que suceda cualquiera
de estas dos instrucciones CommitTrans o RollbackTrans, se queda congelado
el sistema supongo que es por en el momento que hago esto cnn.BeginTrans se
genera un tipo de bloqueo.


alguien sabe quer tipo de bloqueo aplica el BeginTrans (registros, paginas,
mas paginas)

y si haber algun parametro que me indique que esta bloqueado, asi puedo
controlar mediante un ciclo el reintentar guardar


saludos



Preguntas similares