如何在SQL Server上停止运行cpu / time的查询!

时间:2009-05-14 11:32:44

标签: sql-server

让我们假设我的SQL服务器上运行了几百个查询。现在我想通过自动停止这些查询来保护我的服务器免受错误查询。如何在不使用profiler和KILL命令的情况下在SQL Server 2005中实现此行为?

谢谢, Salman Shehbaz。

3 个答案:

答案 0 :(得分:1)

您可以在此处推出自己的解决方案,或升级到SQL 2008。

Managing SQL Server Workloads with Resource Governor

答案 1 :(得分:0)

SQLServer具有查询执行超时,如果在给定时间内未分配内存,则会根据执行计划中的估计成本超出查询(它等待默认值的25倍)。如果查询经常超时,则需要优化,或者需要更多内存。

如果您正在查看已经运行时间超过预期的查询,唯一真正的方法是使用分析器并确定问题所在。如果查询在生产系统中花费的时间太长,那么杀死查询并不是一种好习惯。

这可能会提供some help

答案 2 :(得分:0)

基于以下内容创建新的存储过程:

sp_lock
sp_who2
beta_lockinfo  (http://www.sommarskog.se/sqlutil/beta_lockinfo.html)

只需复制其中一个存储过程并对其进行编辑即可找到“错误查询”,然后在spid上发出KILL。创建一个每N分钟运行一次的作业并运行该存储过程。

警告,你的工作可能会发现自己是一个“错误的查询”并自杀。这种方法会浪费系统资源,但如果你真的想这样做,试试这个方法吧!