我们有一个使用ADO.NET和Entity Framework的.NET应用程序以及许多遗留存储过程。有时,操作会使数据库服务器的CPU达到100%,持续几秒甚至几分钟。在此期间,不能对数据库执行其他操作。有一些罪魁祸首的代码对于在短期内进行可行的重构而言过于复杂和业务至关重要,但这也可能根据情况从更新的代码中发生。
我想阻止任何一个SQL操作占用100%的CPU,等等。有没有办法配置MS SQL为任何一个查询提供不超过20%的CPU?
我知道理想情况下我们会将代码重写为不那么密集,但这在短期内是不可行的,所以我正在寻找一个确保永远不会发生的一般设置。
答案 0 :(得分:4)
查看Resource Governor(假设您正在使用SQL 2008或更高版本)。使用is here的简单概述。虽然它不能在特定查询上工作,但是如果你愿意的话,使用合理的分类器函数将允许你将其缩小范围。我还没有10个代表,所以我只能发布2个链接,但是如果你google" Sql Server分类器功能"你会得到一些体面的指导。