SQL Server 2008 R2存储过程在多次执行时输出结果顺序不同。

3

我们在对一个输出成千上万条记录的存储过程进行回归测试时,遇到了一个奇怪的行为:

如果在短时间内调用该存储过程超过20次,则存储过程可能以不同的顺序输出相同参数的结果。

有人对这种行为有任何想法吗?

由于某些原因,我们无法在存储过程中明确指定顺序。


可能是为什么SQL查询结果没有按照我期望的顺序返回?的重复问题。 - David Manheim
1个回答

1
一条并行查询计划看起来可能是罪魁祸首(或者不同的查询计划在不同的运行中被使用)。
如果您没有使用ORDER BY进行显式排序,则不能保证顺序。
您能发布存储过程和查询计划吗?

是的,这是由于并行查询计划造成的。这是一篇有趣的文章 - http://sqlblog.com/blogs/paul_white/archive/2011/12/23/forcing-a-parallel-query-execution-plan.aspx存储过程非常复杂,正常执行需要几秒钟,并且我们在测试中发现了使用并行计划的原因。 - Rex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接