的最后一段
我正在处理Server 2008 R2 Express安装。我有一个相当复杂的存储过程。根据输入,它可能返回6500条记录。
每条记录都是一个网络订单。它返回80个字段。另外,还有一些分组来总结SPROC本身的行项信息和复杂的过滤。这个查询几乎总是在2秒内运行。
有时,当查询以最小的过滤量运行,从而导致所有6500行返回时,数据库服务器将进入某种错误状态。
CPU峰值达到100%,并停留在那里。有时它会在几分钟后退出这种状态,有时它会停留在那里,直到我重置SQL Service为止。
如果在此错误条件下重置SQL Service,则再次运行查询,通常可以在不重复错误条件的情况下运行它100次。然而,随着数据库的老化(和扩展),这种错误情况变得越来越普遍。

尽管如此,DB服务器几乎一直都很“高兴”,除非这个特定的SPROC触发了这个错误条件。
我真的不能在这里展示我的代码,尽管我很想。
我想知道是否触发了某种内部维护?Server是否有可能进入无限循环?(我在代码中不使用循环)。
是否有一套很好的调试技巧来处理这种情况:?
有时,当查询运行时,它会触发一种状态,Server在其中使用100%的CPU,时间为90秒,时间为20+分钟。98%的情况下,当查询运行时,根本没有问题,但这98%随着时间的推移正在慢慢缩小。
这在很大程度上缓解了问题。不过,我仍有一些问题,但却经常出现约5%的问题,但我仍未解决。
发布于 2012-02-15 18:49:32
这可能与您的AutoClose设置有关。您发现的几乎所有资源都建议将此设置为OFF。
本质上,它会自动关闭连接,但是它会导致很多问题,因为它做得不好。它可以并确实引起各种神秘的性能问题。
第一步应该关闭启动,然后测试一段时间。
有人请求取消该功能。,但看起来他们会把它留在里面。
https://dba.stackexchange.com/questions/13130
复制相似问题