让我们假设我的SQL服务器上运行了几百个查询。现在我想通过自动停止这些查询来保护我的服务器免受错误查询。如何在不使用profiler和KILL命令的情况下在SQL Server 2005中实现此行为?
谢谢, Salman Shehbaz。
答案 0 :(得分:1)
您可以在此处推出自己的解决方案,或升级到SQL 2008。
答案 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分钟运行一次的作业并运行该存储过程。
警告,你的工作可能会发现自己是一个“错误的查询”并自杀。这种方法会浪费系统资源,但如果你真的想这样做,试试这个方法吧!