seq*_*ner 83 sql sql-server sql-server-2008
我正在使用SQL Server 2008及其管理工作室.我执行了一个产生很多行的查询.我尝试通过红色取消按钮取消它,但它在过去的10分钟内没有停止.它通常在3分钟内停止.
原因是什么?如何立即停止?
Mud*_*san 101
sp_who2 'active'
Run Code Online (Sandbox Code Playgroud)
检查CPUTime和DiskIO下的值.注意比较大的过程的SPID.
kill {SPID value}
Run Code Online (Sandbox Code Playgroud)
小智 39
首先执行以下命令:
sp_who2
Run Code Online (Sandbox Code Playgroud)
之后使用SPID执行以下命令,您可以从上面的命令获得:
KILL {SPID value}
Run Code Online (Sandbox Code Playgroud)
ana*_*kic 19
这是一个愚蠢的答案,但它至少在我的情况下可靠地工作:在管理工作室,当"取消执行查询"不停止查询时,我只需单击关闭当前的sql文档.它询问我是否要取消查询,我说是的,并且在几秒钟内它停止执行.之后,它询问我是否要在关闭之前保存文档.此时,我可以单击"取消"以保持文档处于打开状态并继续工作.不知道幕后发生了什么,但似乎有效.
小智 12
首先,您需要使用以下查询显示/检查所有正在运行的查询 -
SELECT text, GETDATE(), *
FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
Run Code Online (Sandbox Code Playgroud)
查找Session-Id并Description分别针对所有正在运行的查询,然后复制要立即终止/停止的特定查询的 Session-Id。
使用以下查询使用 Session-Id 杀死/停止特定查询:
Kill Session-id
Run Code Online (Sandbox Code Playgroud)
例子:
kill 125 --125 is my Session-Id
Run Code Online (Sandbox Code Playgroud)
Tom*_*kel 11
如果您取消并看到该运行
sp_who2 'active'
Run Code Online (Sandbox Code Playgroud)
(旧的sql server 2000 FYI上将不提供Activity Monitor)
找到你要杀死的SPID,例如81
Kill 81
Run Code Online (Sandbox Code Playgroud)
sp_who2 'active' 再次运行 ,你可能会注意到它正在睡觉......回滚
为了让STATUS再次运行KILL
Kill 81
Run Code Online (Sandbox Code Playgroud)
然后你会收到这样的消息
SPID 81: transaction rollback in progress. Estimated rollback completion: 63%. Estimated time remaining: 992 seconds.
Run Code Online (Sandbox Code Playgroud)
很长一段时间以来我一直遭受同样的事情困扰。当您连接到远程服务器(可能很慢)或者网络连接较差时,尤其会发生这种情况。我怀疑微软是否知道正确的答案是什么。
但自从我尝试寻找解决方案。只有一种外行方法有效
“查询当前正在执行。您想取消查询吗?”
点击“是”
过了一会儿,它会询问您是否要保存此查询?
点击“取消”
并发布该信息,可能您的工作室再次稳定以执行您的查询。
它在后台的作用是断开查询窗口与连接的连接。因此,再次运行查询时,再次连接远程服务器将需要一些时间。但相信我,这种权衡远比看到计时器永远运行的痛苦要好得多。
PS:这对我有用,如果对你也有用,那就太好了。!!!