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

Preguntas similare

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



Respuesta Responder a este mensaje
#2 Isaías
01/04/2005 - 19:30 | Informe spam
Yo agregaria al comentario de Alejandro Mesa, ¿Porque no
dejas que SQL Server maneje las TRANSACCIONES y lo quitas
de tu aplicativo?
Respuesta Responder a este mensaje
#3 Maxi
01/04/2005 - 22:47 | Informe spam
Estimado amigo, esto no es tan lineal, por ej, si necesitas armar una
cabecera detalle desde el aplicativo vas a necesitar el control de
transacciones fuera de sql, a menos que uses XML y pases esto a un SP para
las lineas, pero recorda que el XML tiene una limitacion y es el tipo de
dato :(


Salu2
Maxi


"Isaías" escribió en el mensaje
news:086d01c536e0$8e134950$
Yo agregaria al comentario de Alejandro Mesa, ¿Porque no
dejas que SQL Server maneje las TRANSACCIONES y lo quitas
de tu aplicativo?
Respuesta Responder a este mensaje
#4 Fer
03/04/2005 - 01:40 | Informe spam
Cual es la limitacion de XML, no acepta diferentes tipos de datos???


Saludos
Fer

Maxi escribió en el mensaje de noticias
#
Estimado amigo, esto no es tan lineal, por ej, si necesitas armar una
cabecera detalle desde el aplicativo vas a necesitar el control de
transacciones fuera de sql, a menos que uses XML y pases esto a un SP para
las lineas, pero recorda que el XML tiene una limitacion y es el tipo de
dato :(


Salu2
Maxi


"Isaías" escribió en el mensaje
news:086d01c536e0$8e134950$
Yo agregaria al comentario de Alejandro Mesa, ¿Porque no
dejas que SQL Server maneje las TRANSACCIONES y lo quitas
de tu aplicativo?


Respuesta Responder a este mensaje
#5 Miguel Egea
03/04/2005 - 16:23 | Informe spam
No hay ningún motivo para que un begin tran produzca un bloqueo, el uso
posterior, cualquier insert por ejemplo, si que puede estar generando
bloqueos, dependerá mucho del nivel de aislamiento, pero en general si que
puede generarlos.

En el momento en que tengas ese bloqueo, puedes ir al query analizer y como
te dice alejandro usar sp_who, pero quizá sería mejor
select * from master..sysproceses where blocked!=0, esto te dire los
recursos que están bloqueados esperando que otros acaben, en el campo
blocked tienes el spid del bloqueador, ahí puedes ocmprobar que está
haciendo.

Puedes ver más información aquí.
http://www.configuracionesintegrale...articulo%6


-
Miguel Egea Gómez
Microsoft SQL-Server MVP, MCSD, MCAD,MCT
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Jose Manuel Davila" escribió en el mensaje
news:OU0D%
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


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida