2011-03-18 107 views
0

我使用事务范围分布式事务和NHibernate内部事务。 经过所有操作后,我检查是否没有中止Transaction.Current并尝试提交NHibernate事务。NHibernate提交事务接收后'COMMIT TRANSACTION请求没有相应的BEGIN TRANSACTION。 '

有时候,我收到此错误:

The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION. The transaction active in this session has been committed or aborted by another session.

用下面的堆栈跟踪:

System.Data.SqlClient.SqlConnection.OnError(SqlException exception, 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(Byte[] buffer, TransactionManagerRequestType request, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32 timeout, SqlInternalTransaction transaction, 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

看起来你不是通过一个集中的代码,打开你的sesions但每次会议结束时交易,否则我没有看到这种情况发生的一个原因..

确保您有一个是相同的代码路径用于发生此错误的位置..可能看着堆栈跟踪。

相关问题