EL problema no pasa por ahi únicamente. Si lo que indicas es correcto, los SP tienen problemas. El commit es anidado pero el roolback es global por ende debes verificar SI o SI los errores y el nivel de anidamiento de las transacciones para saber que hacer.
Las transacciones sugiero que las manejes en la capa de negocio mediante el objeto TransactionScope. -------------------------------- Atte. Ing. Jose Mariano Alvarez SQL Total Consulting On Tue, Nov 4, 2008 at 10:12, Esteban A. Zibecchi (MUG) <[EMAIL PROTECTED]> wrote: > El tema es que no controlo los SPs por lo que no puedo preveer si tienen o > no transacciones......... Estoy en el horno > > > -----Original Message----- > From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Guillermo > Estevez > Sent: Lunes, 03 de Noviembre de 2008 23:17 > To: Esteban A. Zibecchi > Subject: [dbms] Diferencias entre ADO.NET y TSQL Transactions > > Según tengo entendido la transacción que abras y hagas comit dentro del > store procedure es independiente de la de ADO.net, por lo que te puede > ocasionar muchos problemas. > Saludos, > > Guillermo > > > > -----Original Message----- > From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Esteban A. > Zibecchi (MUG) > Sent: lunes, 03 de noviembre de 2008 06:51 p.m. > To: Guillermo Estevez > Subject: [dbms] Diferencias entre ADO.NET y TSQL Transactions > > Listeros, tengo una duda "casi existencial". Estamos armando una capa de > negocios sobre una BD SQL 2005 ya en funcionamiento. La BD en cuestión opera > a partir de un conjunto extenso de Stored Procedures y se nos plantea la > siguiente duda > > Supongamos que un componente de .NET 2.0 utiliza ADO.NET y hace lo siguiente > > SqlConnection conn = new SqlConnection(); > conn.Open(); > SqlTransaction tran = conn.BeginTransaction(); > > try > { > //Ejecuta SP "A" > //Ejecuta SP "B" > //Ejecuta SP "C" > //Ejecuta SP "D" > > tran.Commit(); > } > catch > { > tran.Rollback(); > } > finally > { > conn.Close(); > } > > > Esto funciona bien sin inconvenientes pero lo que detectamos es que ciertos > SPs llaman a otros y hacen lo siguiente (con TSQL) > > Procedure "B" > begin > Begin transaction > > Exec "B1" > Exec "B2" > > Commit transaction > end > > > En este caso, que pasa con esta transaction? Se abre una anidada? Opera > sobre la de ADO.NET? > > Saludos > Esteban > > > > > > > > > > > > > > >
