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

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

我在 SQL 2005 上有一个 SPID,它在活动监视器中显示为“ROLLBACK”模式(因为事务日志已满,而不是因为它被手动终止)。我尝试使用

KILL 115 WITH STATUSONLY

但它只是说“无法获取状态报告。进程 ID 115 的回滚操作未进行。”

我可以安全地发出“KILL 115”以便查看回滚状态吗?这真的spid 上当前正在回滚什么吗?

答案1

不,它什么也不做。您无法终止正在回滚的 spid。回滚必须完成,否则数据库在事务上不一致并变为可疑。

来自 BOL:仅当会话 ID 或 UOW 由于先前的 KILL session ID|UOW 语句而正在回滚时,KILL WITH STATUSONLY 才会生成报告。

在这种情况下,它会自动回滚,因此您将无法看到进度。

希望这可以帮助。

答案2

所以看起来你终止当前处于回滚状态的 SPID。虽然我仍然不了解内部发生的情况,但似乎一旦执行 KILL,您就可以使用 KILL WITH STATUSONLY 来获取进度。

正如保罗所指出的,这是相当武断的......

答案3

尝试使用以下语句来查看回滚过程的进展

select session_id, percent_complete , last_wait_type , wait_resource, wait_time, wait_type  from sys.dm_exec_requests where status = ‘rollback’

相关内容