我正在使用SQL Server 2008及其管理工作室。我执行了一个产生很多行的查询。我尝试通过红色取消按钮取消它,但它在过去的10分钟内没有停止。它通常在3分钟内停止。
原因是什么?如何立即停止?
答案 0 :(得分:92)
sp_who2 'active'
检查 CPUTime 和 DiskIO 下的值。请注意比较大的过程的SPID。
kill {SPID value}
答案 1 :(得分:56)
原因是什么
如果您的attention可以到达服务器并进行处理,则会立即取消查询。查询必须处于可取消状态,除非您执行某些操作,例如从SQLCLR调用Web服务,否则几乎总是如此。如果您的注意力无法到达服务器通常是由于scheduler超载。
但是如果您的查询是必须回滚的事务的一部分,则无法中断回滚。如果它需要10分钟,那么它需要10分钟,你无能为力。即使重新启动服务器也无济于事,只会使启动时间更长,因为恢复必须完成回滚。
要回答 具体原因适用于您的案例,您需要自行调查。
答案 2 :(得分:34)
首先执行以下命令:
sp_who2
之后使用SPID执行以下命令,该命令来自上面的命令:
KILL {SPID value}
答案 3 :(得分:18)
这是一个愚蠢的答案,但它至少在我的情况下可靠地运作: 在管理工作室中,当“取消执行查询”没有停止查询时,我只需单击关闭当前的sql文档。它询问我是否要取消查询,我说是的,并且在几秒钟内它停止执行。之后,它询问我是否要在关闭之前保存文档。此时,我可以单击“取消”以保持文档处于打开状态并继续工作。不知道幕后发生了什么,但似乎有效。
答案 4 :(得分:11)
您可以使用键盘快捷键 ALT + Break 来停止查询执行。但是,在所有情况下都可能不会成功。
答案 5 :(得分:10)
如果您取消并查看该运行
sp_who2 'active'
(活动监视器在旧的sql server 2000 FYI上无法使用)
发现您要杀死的SPID,例如81
Kill 81
再次运行sp_who2 'active'
你可能会注意到它正在睡觉......回滚
让STATUS再次运行KILL
Kill 81
然后你会收到这样的消息
SPID 81: transaction rollback in progress. Estimated rollback completion: 63%. Estimated time remaining: 992 seconds.
答案 6 :(得分:5)
--Find Session Id for respective all running queries
SELECT text, getdate(),*
FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
---Kill specific session
kill 125
答案 7 :(得分:2)
显然在sql server 2008 r2 64bit上,来自IIS的长时间运行查询kill kill似乎不起作用,查询只是一次又一次地重新启动。它似乎正在重复使用spid。该查询导致sql server不断占用35%的cpu并挂起网站。我猜bc /它无法响应登录的其他查询
答案 8 :(得分:1)
在我的部分,当我试图在无休止地运行时关闭它时,我的sql挂了。所以我做的是打开我的任务管理器并结束我的SQL查询任务。这停止我的SQL并重新启动它。
答案 9 :(得分:1)
一个简单的答案,如果红色“停止”框不起作用,则尝试按下键盘上的“Ctrl + Break”按钮。
如果您在Linux上运行SQL Server,则可以添加一个名为“killall”的系统托盘的应用程序 只需单击“killall”按钮,然后单击循环中捕获的程序,它将终止程序。 希望有所帮助。
答案 10 :(得分:0)
我长期遭遇同样的事情。它特别发生在您连接到远程服务器(可能很慢)或网络连接不良时。 我怀疑微软是否知道正确答案是什么。
但是,因为我试图找到解决方案。只有1个外行人的方法才有效
"查询当前正在执行。要取消查询吗?"
点击"是"
一段时间后,它会询问您是否要保存此查询?
点击"取消"
然后发布,可能是你工作室再次稳定以执行你的查询。
它在后台执行的操作是断开查询窗口与连接。因此,要再次运行查询,再次连接远程服务器需要一些时间。但请相信我,这种权衡比看到那个永恒运行的计时器的痛苦要好得多。
PS:这适合我,Kudos如果适合你的话。 !!!
答案 11 :(得分:0)
如果使用VSCode mssql Extension,点击F1,在提示中写入mssql并选择“取消查询”,如图this thread about the extension。