我将事务范围用于分布式事务和NHibernate内部事务。
在所有操作之后,我检查Transaction.Current
是否未中止并尝试提交NHibernate事务。
有时我会收到此错误:
COMMIT TRANSACTION请求没有相应的BEGIN TRANSACTION。 此会话中活动的事务已提交或中止 另一场会议。
使用以下stacktrace:
System.Data.SqlClient.SqlConnection.OnError(SqlException异常, Boolean breakConnection)в System.Data.SqlClient.SqlInternalConnection.OnError(SQLEXCEPTION exception,Boolean breakConnection) System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)вSystem.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)в System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(字节[] buffer,TransactionManagerRequestType请求,String transactionName, TransactionManagerIsolationLevel isoLevel,Int32超时, SqlInternalTransaction事务,TdsParserStateObject stateObj, Boolean isDelegateControlRequest)в System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest transactionRequest,String transactionName,IsolationLevel iso, SqlInternalTransaction internalTransaction,Boolean isDelegateControlRequest)в System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest transactionRequest,String name,IsolationLevel iso, SqlInternalTransaction internalTransaction,Boolean isDelegateControlRequest)в System.Data.SqlClient.SqlInternalTransaction.Commit()в System.Data.SqlClient.SqlTransaction.Commit()в NHibernate.Transaction.AdoTransaction.Commit()。
此错误偶尔会出现的主要问题。这可能是什么原因?
答案 0 :(得分:0)
看起来你不是通过集中代码打开你的sesions,而是每次关闭会话事务,否则我没有看到发生这种情况的原因..
确保您在抛出此错误的位置使用相同的代码路径..可能正在查看堆栈跟踪。