我正在使用 SQL Server 2008 及其管理工作室。我执行了一个产生许多行的查询。我试图通过红色的取消按钮取消它,但它在过去 10 分钟内没有停止。它通常会在 3 分钟内停止。
可能是什么原因,我该如何立即停止它?
我正在使用 SQL Server 2008 及其管理工作室。我执行了一个产生许多行的查询。我试图通过红色的取消按钮取消它,但它在过去 10 分钟内没有停止。它通常会在 3 分钟内停止。
可能是什么原因,我该如何立即停止它?
sp_who2 'active'
检查CPUTime和DiskIO下的值。注意具有较大值的进程的 SPID。
kill {SPID value}
首先执行以下命令:
sp_who2
之后使用 SPID 执行以下命令,您从上面的命令中获得:
KILL {SPID value}
这是一个愚蠢的答案,但至少在我的情况下它可以可靠地工作:在管理工作室中,当“取消执行查询”没有停止查询时,我只需单击以关闭当前的 sql 文档。它问我是否要取消查询,我说是,然后你瞧,几秒钟后它就停止执行了。之后它会询问我是否要在关闭之前保存文档。此时我可以单击取消以保持文档打开并继续工作。不知道幕后发生了什么,但它似乎有效。
如果您取消并看到该运行
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.
首先,您需要使用以下查询显示/检查所有正在运行的查询-
SELECT text, GETDATE(), *
FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
查找Session-Id
并Description
针对所有正在运行的查询,然后复制您要立即终止/停止的特定查询的 Session-Id。
使用以下查询使用 Session-Id 终止/停止特定查询:
Kill Session-id
例子:
kill 125 --125 is my Session-Id
您可以使用键盘快捷键ALT+Break来停止查询执行。但是,这可能不会在所有情况下都成功。
很长一段时间以来,我一直在遭受同样的痛苦。当您连接到远程服务器(可能很慢)或网络连接不佳时,它会特别发生。我怀疑微软是否知道正确的答案是什么。
但是因为我试图找到解决方案。只有一种外行方法有效
“查询当前正在执行,您要取消查询吗?”
点击“是”
过了一会儿它会问你是否要保存这个查询?
点击“取消”
然后发布,可能是您的工作室再次稳定执行您的查询。
它在后台所做的是将您的查询窗口与连接断开。因此,为了再次运行查询,再次连接远程服务器需要一些时间。但相信我,这种权衡比看到那个永远运行的计时器的痛苦要好得多。
PS:这对我有用,如果对你也有用,那就赞一下。!!!
显然在 sql server 2008 r2 64bit 上,从 IIS 长时间运行查询,kill spid 似乎不起作用,查询只是一次又一次地重新启动。它似乎在重用 spid。该查询导致 sql server 不断占用 35% 的 cpu 并挂起网站。我猜 bc/ 它无法响应其他登录查询
一个简单的答案是,如果红色的“停止”框不起作用,请尝试按键盘上的“Ctrl + Break”按钮。
如果您在 Linux 上运行 SQL Server,则可以将一个名为“killall”的应用程序添加到系统托盘中,只需单击“killall”按钮,然后单击陷入循环的程序,它将终止程序。希望有帮助。
就我而言,当我在无休止地运行时试图关闭它时,我的 sql 挂断了。所以我所做的是我打开我的任务管理器并结束我的 sql 查询任务。这停止了我的 sql 并重新启动它。
如果使用VSCode mssql 扩展,请单击F1,在提示中输入 mssql,然后选择“取消查询”,如有关扩展的线程中所示。