1

简而言之: 在调用 transaction.Commit() 之后,下一个操作会失败,就好像事务没有提交一样。

更多细节: 我们有一个线程运行对数据库的写查询,其中一些被封装在一个事务中。一段时间后运行较重的负载时,我们遇到提交事务后的操作失败并显示错误指示事务正在进行中的情况,具体取决于提交后执行的操作,我们收到以下错误之一:

下一个操作是'开始交易:

...连接不支持并行事务...

下一个操作是插入/更新/删除

当分配给命令的连接处于挂起的本地事务中时,ExecuteNonQuery 要求该命令具有事务。该命令的 Transaction 属性尚未初始化。

通过调试器检查 Sql Connection 对象表明它包含一个“sqlInnerTransaction”对象,其父对象设置为 null。我们确实知道对“提交”的调用成功完成,没有出现错误。
运行 .net 4.0、SQL Server 2008 R2 SP2

4

1 回答 1

6

查看此消息:

连接不支持并行事务

我想知道您是否在多个线程中使用单个连接对象?

连接不是线程安全的。您应该只在创建它们的线程中使用它们。

于 2012-12-03T16:37:18.740 回答