sql >> データベース >  >> RDS >> Sqlserver

TransactionInDoubtException 例外でトランザクションの整合性が失われる

    によるとMSDN :

    編集:

    回復用: TransactionInDoubtException をキャッチする必要があります &適切なチェックで補正ロジックを記述します。

    using (var scope =new TransactionScope(TransactionScopeOption.Required, option)) { try { Context.SaveEmail(_emailInfoList); context.SaveSyncState(syncState);スコープ.Complete(); true を返します。 } catch (TransactionInDoubtException ex) { //バッチのいずれかのレコードが部分的にコミットされているかどうかを確認します。コミットされた場合、このバッチを再処理する必要はありません。 // トランザクション スコープを最初に破棄する必要があります。 scope.Dispose(); if (IsReprocessingNeeded(syncState)) スロー; true を返します。 } } ///  プライベート bool IsReprocessingNeeded(SyncStateDataModal syncState) { while (true) { try { var id =_emailInfoList[0].ID; bool isEmailsCommitted =Context.GetJournalEmail().FirstOrDefault(a => a.ID ==id) !=null; if (!isEmailsCommitted) は true を返します。 if (context.EmailSynch(syncState.Id) ==null) { context.SaveSyncState(syncState); false を返します。 } catch (Exception ex) { Thread.Sleep(TimeSpan.FromMinutes(AppConfiguration.RetryConnectionIntervalInMin)); } } }  

    ソース TransactionInDoubtException の回復パスは?




    1. Postgresql9.2pg_dumpバージョンの不一致

    2. Rでパスワードを暗号化-RODBCを使用してOracleDBに接続します

    3. Javaを使用してmysqlにデータを挿入する方法

    4. 現在のインデックスを自動的に削除して再作成する