Saltar al contenido

Error “La operación no es válida para el estado de la transacción” y alcance de la transacción

Nuestros mejores investigadores agotaron sus depósitos de café, buscando día y noche por la respuesta, hasta que Pedro halló la solución en Gogs y hoy la comparte con nosotros.

Solución:

Después de investigar un poco, parece que no puedo tener dos conexiones abiertas a la misma base de datos con el bloque TransactionScope. Necesitaba modificar mi código para que se viera así:

public void MyAddUpdateMethod()

    using (TransactionScope Scope = new TransactionScope(TransactionScopeOption.RequiresNew))
    
        using(SQLServer Sql = new SQLServer(this.m_connstring))
        
            //do my first add update statement            
        

        //removed the method call from the first sql server using statement
        bool DoesRecordExist = this.SelectStatementCall(id)
    


public bool SelectStatementCall(System.Guid id)

    using(SQLServer Sql = new SQLServer(this.m_connstring))
    
        //create parameters
    

Cuando me encontré con esta excepción, hubo un “Tiempo de espera de transacción” de InnerException. Dado que esto fue durante una sesión de depuración, cuando detuve mi código durante un tiempo dentro de TransactionScope, elegí ignorar este problema.

Cuando esta excepción específica con un tiempo de espera aparece en el código implementado, creo que la siguiente sección en su archivo .config lo ayudará:

 
         

También me encontré con el mismo problema, cambié el tiempo de espera de la transacción a 15 minutos y funciona. Espero que esto ayude.

TransactionOptions options = new TransactionOptions();
options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
options.Timeout = new TimeSpan(0, 15, 0);
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,options))

    sp1();
    sp2();
    ...


Aquí tienes las reseñas y calificaciones

Si te animas, eres capaz de dejar una reseña acerca de qué te ha parecido este tutorial.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *