相关疑难解决方法(0)

"另一个会话使用的事务上下文"的原因是什么

我正在寻找这个错误根源的描述:"另一个会话正在使用的事务上下文".

我有时会在我的一个单元测试中得到它,所以我不能提供repro代码.但我想知道什么是"按设计"错误的原因.

更新:错误从SQL Server 2008返回为SqlException.我收到错误的地方似乎是单线程的.但是我可能有单元测试交互,因为我得到了错误,一次运行几个测试(VS2008sp1中的MSTest).但失败的测试看起来像:

  • 创建一个对象并将其保存在DB-transaction(commit)中
  • 创建TransactionScope
  • 试图打开连接 - 这里我得到了带有这种堆栈跟踪的SqlException:

.

System.Data.SqlClient.SqlException: Transaction context in use by another session.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[] buffer, TransactionManagerRequestType request, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32 timeout, SqlInternalTransaction transaction, TdsParserStateObject stateObj, Boolean isDelegateControlRequest)
   at System.Data.SqlClient.SqlInternalConnectionTds.PropagateTransactionCookie(Byte[] cookie)
   at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
   at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx)
   at System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction)
   at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection …
Run Code Online (Sandbox Code Playgroud)

.net sql-server transactions transactionscope

14
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

sql-server ×1

transactions ×1

transactionscope ×1