Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मेरे लेन-देन की अखंडता TransactionInDubtException अपवाद के साथ खो गई है

के अनुसार एमएसडीएन :

संपादित करें:

पुनर्प्राप्ति के लिए: आपको 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));
                }
            }
        }

स्रोत ट्रांजेक्शनइनडाउट एक्सेप्शन के लिए रिकवरी पथ क्या है?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एमएस एसक्यूएल सर्वर 2008 में संग्रहीत प्रक्रिया के पैरामीटर के रूप में सी # डेटाटेबल पास करना

  2. लिनक्स पर डेल्फी को SQL सर्वर से कनेक्ट करना

  3. SQL केस संवेदनशील स्ट्रिंग तुलना करें

  4. SQL सर्वर में FILE_ID() बनाम FILE_IDEX():क्या अंतर है?

  5. क्या टाइमस्टैम्प कॉलम अद्वितीय है?