KILL WITH STATUSONLY无法看到回滚SPID的进度

我在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来获得进度。

正如保罗所说,这是相当随意的…