在datareader循环内提交事务

时间:2017-01-06 15:01:25

标签: c# ado.net

我在阅读器内循环并更新读者正在阅读的其他表格。每1000个循环我想提交()转换,但它给出了错误:

  

由于存在,因此无法执行事务操作   处理此交易的待处理请求。

我已经看到了其他2个答案,其中一个说关闭了读者,但我们显然无法做到这一点,因为我们正在使用读者的数据来运行更新声明并更新另一个表

所以问题是,如果你在一个连接上创建一个事务,那么你有一个datareader循环一些sql命令,我怎么能在datareader循环中运行一个update命令并在datareader中提交()事务循环?

1 个答案:

答案 0 :(得分:1)

您有两种方法可以实现这一目标:

1)打开第二个连接并将其用于事务更新。

2)使用SQL Server的“多个活动结果集”选项:

  

如果在MARS连接下提交了两个批次,其中一个包含SELECT语句,另一个包含DML语句,则DML可以在SELECT语句的执行中开始执行。

来源:https://msdn.microsoft.com/en-us/library/h32h3abf(v=vs.110).aspx