我在阅读器内循环并更新读者正在阅读的其他表格。每1000个循环我想提交()转换,但它给出了错误:
由于存在,因此无法执行事务操作 处理此交易的待处理请求。
我已经看到了其他2个答案,其中一个说关闭了读者,但我们显然无法做到这一点,因为我们正在使用读者的数据来运行更新声明并更新另一个表
所以问题是,如果你在一个连接上创建一个事务,那么你有一个datareader循环一些sql命令,我怎么能在datareader循环中运行一个update命令并在datareader中提交()事务循环?
答案 0 :(得分:1)
您有两种方法可以实现这一目标:
1)打开第二个连接并将其用于事务更新。
2)使用SQL Server的“多个活动结果集”选项:
如果在MARS连接下提交了两个批次,其中一个包含SELECT语句,另一个包含DML语句,则DML可以在SELECT语句的执行中开始执行。
来源:https://msdn.microsoft.com/en-us/library/h32h3abf(v=vs.110).aspx