Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tính toàn vẹn của giao dịch của tôi bị mất với ngoại lệ TransactionInDoubtException

Theo MSDN :

CHỈNH SỬA:

Để khôi phục: Bạn phải bắt TransactionInDoubtException &viết logic bù bằng kiểm tra apt.

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

NGUỒN Đường dẫn khôi phục cho TransactionInDoubtException là gì?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhập dữ liệu tệp văn bản được phân tách bằng dấu ống dẫn vào bảng SQLServer

  2. Sự khác biệt giữa việc thêm các tham số vào thủ tục được lưu trữ trong SQL Server?

  3. Thay đổi định dạng ngày cho phiên hiện tại trong SQL Server

  4. ràng buộc duy nhất có điều kiện

  5. Xóa tất cả các khoảng trắng khỏi một chuỗi trong SQL Server