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
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

Responder a