当前位置: 首页 > 编程语言 > C#

如何处理TransactionInDoubtException分享

时间:2023-04-10 18:16:19 C#

C#学习教程:如何处理TransactionInDoubtException更新:隔离级别为ReadCommited调用scope.Complete()时出现以下异常。(见下文)同时数据库完全处于另一个应用程序的高负载之下。事实上我发现确实执行了INSERT语句。我的问题是:如何以一种使数据库保持一致状态的方式处理此异常?我正在寻找总是完成或未完成但从未完成一半的交易。异常堆垛跟踪:System.Transactions.TransactionInDoubtException:交易有疑问。--->System.Data.SqlClient.SqlException:超时已过。在操作完成之前超时期限已过,或者服务器没有响应。在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔breakConnection)在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObjectstateObj).Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResultasyncResult,TdsParserStateObjectstateObj)在System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()在System.Data.SqlClient.TdsParserStateObject.ReadBuffer())在System.Data.SqlClient.TdsParser.Run(RunBehaviorrunBehavior,SqlCommandcmdHandler,SqlDataReaderdataStream,BulkCopySimpleResultSetbulkCopyHandler,TdsParserStateObjectstateObj)在System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[]buffer,TransactionManagerRequestTyperequest,StringtransactionName,TransactionManagerIsolationLevelisoLevel,Int32timeout,SqlInternalTransactiontransaction,TdsParserStateObjectstateObj,BooleanisDelegateControlRequest.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequesttransactionRequest,StringtransactionName,IsolationLeveliso,SqlInternalTransactioninternalTransaction,BooleanisDelegateControlRequest)在System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequesttransactionRequest,Stringname,IsolationLeveliso,SqlInternalTransactioninternalTransaction,BooleanisDelegateControlRequest)DelegateSqlClient.SqlDelegatedTransaction.SinglePhaseCommit(SinglePhaseEnlistmentenlistment)---内部异常结束n堆栈跟踪---在System.Transactions.TransactionStateInDoubt.EndCommit(InternalTransactiontx)在System.Transactions.CommittableTransaction.Commit()在System.Transactions.TransactionScope.InternalDispose()在System.Transactions.TransactionScope.Dispose()知道是否事务已完成或中止,相关事务数据库仍处于一致状态。如果您遇到这样的异常,您需要访问数据库以查看是否发生了更改,但您可以确定您不会看到一半的更改。请注意,我不知道如果有问题的组件是DTC,并且你有一个分布式事务会发生什么——我当然希望Microsoft修复这个问题,并且仍然将有问题的分布式事务作为一个整体来处理。看这里:“具体来说,事务的最终结果,无论是提交还是中止,对于这个事务都是未知的。”并且需要了解更多C#学习教程,希望大家多多关注~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: