我有一个系统设置,批量执行存储过程10次。
exec procedure 1
exec procedure 2
exec procedure 3
exec procedure 4
...
exec procedure 10
该过程旨在根据目标表中记录的ID累计运行总计。
当我运行该批次时,我会得到不同步的结果。运行总计应该是前一行的运行总计加上当前行的值。
当我在每个之间使用GO语句运行相同的批处理时,运行需要更长的时间,但是正确执行。
是否有任何类型的提示(如“MAXDOP 1”)可以在这种情况下完成,以强制程序按顺序执行和完成而不会失去同步?
我应该补充说,被调用的存储过程本身调用了几个过程。如果这与解决方案有任何关系。
答案 0 :(得分:0)
我对此做了一些测试,看起来我的初步想法是不正确的。我使用GO语句对批次进行了多次测试,即使这样,批次中只有少数记录会更新其运行余额,但其余记录将保持不同步。看起来当我进行初始测试时,前10个记录正确更新,但我没有注意到该部分中的任何其他内容,因为其余值已经正确,直到数据集的后续部分。
这看起来是程序内部的问题,而不是重复执行程序。奇怪的是,我们从未在单核系统上遇到过这个问题,这仍然让我觉得这是一个并行问题,但很可能是程序内部的。
抱歉浪费你的时间。