Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Целостта на транзакцията ми се губи с изключение TransactionInDoubtException

Според MSDN :

РЕДАКТИРАНЕ:

За възстановяване: Трябва да хванете TransactionInDoubtException &напишете компенсираща логика с подходящи проверки.

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));
                }
            }
        }

ИЗТОЧНИК Какъв е пътят за възстановяване на 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

  2. MS SQL 2008 - вземете всички имена на таблици и техния брой редове в DB

  3. Скриване на таблица в база данни на SQL Server?

  4. Вътрешни елементи на SQL Server:Проблемни оператори Pt. III – Сортове

  5. Как мога да съкратя дата и час в SQL Server?