我在SQL 2005上有一个SPID,它在活动监视器中显示为“ROLLBACK”模式(因为事务日志已满,而不是因为手动被终止)。 我试图看看剩下多less时间来回滚
KILL 115 WITH STATUSONLY
但它只是表示“无法获取状态报告,进程ID 115的回滚操作未在进行中”。
我可以安全地发出“杀死115”,以便我可以看到回滚状态? 这实际上是做任何事情在当前在回滚的spid?
不,它不做任何事情。 你不能杀死一个回滚的spid。 回滚必须完成,否则数据库事务不一致,并成为SUSPECT。
从BOL:KILL WITH STATUSONLY只有当会话ID或UOW由于先前的KILL会话ID | UOW语句而正在被回滚时才会生成报告。
在这种情况下,它自行回滚,所以你将无法看到进展。
希望这可以帮助。
所以看起来你可以杀死一个当前处于回滚状态的SPID。 虽然我仍然没有深入了解发生的事情,但看起来一旦执行了KILL,您就可以通过使用KILL WITH STATUSONLY来获得进度。
正如保罗所说,这是相当随意的…