Foros del Web » Programación para mayores de 30 ;) » .NET »

Manejo de Transacciones

Estas en el tema de Manejo de Transacciones en el foro de .NET en Foros del Web. Imaginemos que tengo en mi aplicación tengo una capa de acceso a datos, la cual tiene métodos que ejecuta inserts en la base. Yo le ...
  #1 (permalink)  
Antiguo 12/02/2007, 13:56
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Manejo de Transacciones

Imaginemos que tengo en mi aplicación tengo una capa de acceso a datos, la cual tiene métodos que ejecuta inserts en la base. Yo le mando como parámetros variables a estos métodos con los datos que se van a insertar. Cada método llama a un procedimiento almacenado de SQL Server el cual tiene su BEGIN TRAN y su COMMIT TRAN. El manejo de las conexiones es transparente para mi, no veo ni pizca de código porque la capa de acceso a datos es una dll, yo solo llamo a los métodos y ya!

Ahora resulta que tengo problemas cuando el usuario da clic en su botón grabar y se llamen a dos funciones que a su vez llamen a dos procedimientos distintos, si el segundo procedimiento se cae y hace rollback esto no afectará al primer procedimiento que hizo commit
  #2 (permalink)  
Antiguo 12/02/2007, 15:54
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Re: Manejo de Transacciones

Se supone que si lo vas a hacer transaccional debes colocar dentro de un SP toda la funcionalidad que necesitas así como los sp´s que vas a llamar desde tu SP principal para manejar la transaccion para que dentro de tu SP caches el error (@@error) y realices el rollback

Aunque aqui viene otro detalle, quieres manejar la transaccion a nivel BD o desde objetos del framework ?? si es así, como te estas conectando..? estás utilizando algún application block o enterprise library..?? o te conectas de la forma Simple con objetos del SqlClient ??

Cita:
Ahora resulta que tengo problemas cuando el usuario da clic en su botón grabar y se llamen a dos funciones que a su vez llamen a dos procedimientos distintos
Todo eso debe si es transaccional se debe llamar desde un solo lado u ocupar un objeto connection que tenga la referencia de la transacción para que puedas llamar a todos los SP´s que necesites (dentro de la misma referencia obviamente)

Cita:
si el segundo procedimiento se cae y hace rollback esto no afectará al primer procedimiento que hizo commit
No es lógico que si el segundo se cae el primero haga commit, se supone que por eso estás haciendo una transaccion no crees.??

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 13/02/2007, 07:50
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Manejo de Transacciones

Hola amigo Rootk, en realidad yo no se como se hace la conexión porque eso está en una dll, desde mi aplicación yo no manejo nada de conexiones a la base, tan solo llamo a un método de la dll y le envio los datos que se van a insertar. La transacción la estoy manejando a nivel de BD, no utilizo nada de la clase System.SqlClient. Supongo que la bendita dll es la que los utiliza para conectarse.

Cita:
No es lógico que si el segundo se cae el primero haga commit, se supone que por eso estás haciendo una transaccion no crees.??
Supongo que cada llamada al metodo de la dll es una transacción. Como que no me queda más que hacer un procedimiento que haga lo que antes tenía en procedimientos separados
  #4 (permalink)  
Antiguo 13/02/2007, 10:29
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Re: Manejo de Transacciones

Cita:
La transacción la estoy manejando a nivel de BD
Pues si es así es más sencillo porque ya tienes el control directamente en tu SP para realizar la transaccion

Cita:
Supongo que cada llamada al metodo de la dll es una transacción.
las llamadas a las dlls no son transacciones (aunque puedes tener a lo mejor un COM+ que mantenga o realice transacciónes) puedes llamar 1000 métodos, 1000 sp´s, etc... y la transacción es precisamente o se ejecuta todo o no se ejecuta nada.
  #5 (permalink)  
Antiguo 13/02/2007, 11:02
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Manejo de Transacciones

Te explico como es exactamente la cosa. Tengo una solución donde tengo tres proyectos, mi aplicación web, quien consume web services (segundo proyecto), el cual llama a metodos de un tercer proyecto tipo bibliteca de clases, que tiene agregada una dll que hace las conexiones a la base y tiene los metodos que llaman a los procedimientos almaceandos. El codigo de la dll no lo tengo, tan solo se que debo usarlo porque es el que implementa las seguridades.

Entonces yo desde mi aplicacion web llamo a un metodo del web service que inserta o actualiza, enviandole los datos a insertar o actualizar como xml y me devuelve un xml en el que uno de los atributos especifica si hubo error o no Pero en algunos casos me es necesario llamar a mas de un método del web service
  #6 (permalink)  
Antiguo 20/03/2007, 16:27
 
Fecha de Ingreso: marzo-2007
Mensajes: 1
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Manejo de Transacciones

Hola!!!

Tengo exactamente el mismo problema...

Me explico....

He construido un sitio en ASP NET (2005), el cual debe utilizar dos WEB services (que estan en otro proyecto) y que deben estar disponibles para otras aplicaciones. Estos WEB Services utilizan DLLs (VB NET).

Desde el WEB Services puedo manejar y controlar las transacciones atravez del System.EnterpriseServices utilizando ContextUtil.SetAbort() o ContextUtil.SetComplete().

Pero cuando quiero pasar el control de las transacciones al sitio WEB, no realiza el ContextUtil.SetAbort() deseado....

He consultado y se condigurar otras opciones de transacciones mediante DTC, asi que puedo compatir este conocimiento. Pero tambien necesito si me pueden ayudar con mi temita. Lo bueno de todo esto es que esta entretenido...

De antemano Gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:11.