【发布时间】:2011-03-18 13:56:06
【问题描述】:
我将事务范围用于分布式事务和 NHibernate 内部事务。
完成所有操作后,我检查 Transaction.Current 是否未中止并尝试提交 NHibernate 事务。
有时我会收到此错误:
COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。 此会话中活动的事务已提交或中止 由另一个会话。
使用以下堆栈跟踪:
System.Data.SqlClient.SqlConnection.OnError(SqlException 异常, Boolean breakConnection) в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔型 breakConnection) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) × System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader 数据流、 BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) в System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(字节 [] 缓冲区,TransactionManagerRequestType 请求,字符串 transactionName, TransactionManagerIsolationLevel isoLevel,Int32 超时, SqlInternalTransaction 事务,TdsParserStateObject stateObj, 布尔 isDelegateControlRequest) × System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest transactionRequest,字符串 transactionName,IsolationLevel iso, SqlInternalTransaction 内部事务,布尔值 isDelegateControlRequest) × System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest transactionRequest,字符串名称,IsolationLevel iso, SqlInternalTransaction 内部事务,布尔值 isDelegateControlRequest) × System.Data.SqlClient.SqlInternalTransaction.Commit() System.Data.SqlClient.SqlTransaction.Commit() NHibernate.Transaction.AdoTransaction.Commit()。
这个错误是偶尔出现的主要问题。这可能是什么原因?
【问题讨论】:
标签: nhibernate transactionscope