Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utrata integralności mojej transakcji z wyjątkiem TransactionInDoubtException

Według MSDN :

EDYTUJ:

W celu odzyskania: Musisz złapać TransactionInDoubtException i napisz logikę kompensacji za pomocą 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));
                }
            }
        }

ŹRÓDŁO Jaka jest ścieżka odzyskiwania dla TransactionInDoubtException?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Konwertuj liczbę całkowitą na ciąg binarny

  2. SQL Server 2008 wielokrotny problem LIKE

  3. Przekazywanie DataTable do procedury składowanej jako argument

  4. Jak zwrócić wiele zestawów wyników za pomocą SqlCommand?

  5. Usuń konto pocztowe bazy danych w programie SQL Server (T-SQL)