如何在Sybase中杀死unruly spid?

时间:2008-12-15 00:36:15

标签: tsql sybase kill spid

我的数据库中有几个流氓spid,当我以sa登录并使用sp_who时,我看到它正在睡觉,但尝试使用kill <spid>来消除他们失败了,我实际上无法访问服务器本身来反弹它。还有其他方法可以杀掉这些东西吗?

2 个答案:

答案 0 :(得分:3)

系统进程无法被杀死。例如,在sp_who的输出中,cmd是NETWORK HANDLER,MIRROR HANDLER和CHECKPOINT SLEEP(或很少,CHECKPOINT)和AUDIT PROCESS无法被杀死。如果他们的状态为“recv sleep”,“send sleep”,“alarm sleep”和“lock sleep”,他们就可以被杀死。

在sp_who输出中,您无法判断状态为“recv sleep”的进程是属于使用SQL Server的用户,还是可能暂停以检查命令的结果,或者进程是否指示用户重新启动了PC或其他终端,并留下了搁浅的进程。您可以通过查询sysprocesses表获取有关可疑进程的更多信息。例如:

从sysprocesses中选择hostprocess,program_name,其中spid = 8

如果program_name是isql,你知道这个spid可以被杀死。(等等......)

答案 1 :(得分:0)

我有一个客户端应用程序,有时会做类似的事情。客户端通常位于select的中间,但不再检索行。 (这可能是客户端游标,但我不确定)。这些spid似乎是不可杀戮的。我必须找到用户并要求他们注销。

我有这些的另一种情况是在服务器上出现错误或堆栈跟踪之后。检查你的错误日志,看看那里是否有任何狡猾的条目。如果有,那么重启将是您唯一的选择。