Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Integritas transaksi saya hilang dengan pengecualian TransactionInDoubtException

Menurut MSDN :

EDIT:

Untuk pemulihan: Anda harus menangkap TransactionInDoubtException &tulis logika kompensasi dengan cek tepat.

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

SUMBER Apakah jalur pemulihan untuk 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. Bagaimana cara mendapatkan hasil ekspor dalam format CSV nyata di SQL Server Management Studio?

  2. Perbedaan Antara sys.columns, sys.system_columns, &sys.all_columns di SQL Server

  3. Buat Fungsi Bernilai Tabel di SQL Server

  4. Baris SQL ke Kolom

  5. Bagaimana saya bisa mendapatkan pemicu untuk diaktifkan pada setiap baris yang dimasukkan selama INSERT INTO Table (dll) SELECT * FROM Table2?