我们有一个已运行5个小时以上的交易。我们的磁盘空间不足。会话已被终止,但仍在等待IO_COMPLETION。实际上,wait_type刚刚更改为PAGEIOLATCH_EX。如何终止已暂停的SQL Server事务?我不担心丢失数据,因为所有数据都可以重新填充。
session_id: 54
STATUS: suspended
blocked by: 0
wait_type: PAGEIOLATCH_EX
Elapsed Time (in Sec): 19750.420000
open_transaction_count: 2
我运行了KILL 54 WITH STATUSONLY,并收到以下消息:SPID 54:正在进行事务回滚。估计回滚完成:0%。估计剩余时间:0秒。我不相信0秒部分。
—
Tarzan 2015年
回滚是单线程操作,因此,例如,如果您的原始事务运行时并行运行了8个线程,直到被杀死,回滚可能会花费8倍的时间。
—
詹姆斯·Z
@Tarzan
—
Kin Shah 2015年
KILL .. WITH STATUSONLY
不准确,我明白你的意思。你可以试试Alter database .. set OFFLINE or single_User WITH ROLLBACK IMMEDIATE
吗?
我最终让它运行了一整夜。终于完成了。hoo!感谢您的评论。
—
Tarzan 2015年
KILL 54 WITH STATUSONLY
用来找出回滚需要多长时间。