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