sql >> Database >  >> RDS >> Sqlserver

Integriteit van mijn transactie gaat verloren met uitzondering TransactionInDoubtException

Volgens MSDN :

BEWERKEN:

Voor herstel: Je moet TransactionInDoubtException . pakken &schrijf compenseer logica met apt checks.

using (var scope = new TransactionScope(TransactionScopeOption.Required, option))
    {
        try
        {
            Context.SaveEmail(_emailInfoList);
            context.SaveSyncState(syncState);
            scope.Complete();
            return true;
        }
        catch (TransactionInDoubtException ex)
        {
            //check whether any one record from the batch has been partially committed . If committed then no need to reprocess this batch.     

            // transaction scope should be disposed first .

            scope.Dispose();

            if (IsReprocessingNeeded(syncState))
                throw;

            return true;
        }
    }

        /// <returns></returns>
        private bool IsReprocessingNeeded(SyncStateDataModal syncState)
        {
            while (true)
            {
                try
                {
                    var id = _emailInfoList[0].ID;
                    bool isEmailsCommitted = Context.GetJournalEmail().FirstOrDefault(a => a.ID == id) != null;
                    if (!isEmailsCommitted)
                        return true;
                    if (context.EmailSynch(syncState.Id) == null)
                    {
                        context.SaveSyncState(syncState);
                    }
                    return false;
                }
                catch (Exception ex)
                {

                    Thread.Sleep(TimeSpan.FromMinutes(AppConfiguration.RetryConnectionIntervalInMin));
                }
            }
        }

BRON Wat is het herstelpad voor TransactionInDoubtException?




  1. mysql niet uniek automatisch verhogen, primaire sleutel twee velden

  2. Hoe gegevens in MySQL in te voegen met een automatisch verhoogde primaire sleutel?

  3. Aanvullende bronbestanden compileren in cmake na het bouwproces

  4. De kolommen van een tabelkolommen hernoemen volgens een toewijzing die in een andere tabel is gedefinieerd - met MYSQL