我们有一个已运行超过 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
下次发生这种情况时,运行
sp_WhoIsActive
(下载/文档)并查看谁在运行什么并查看逻辑。检查是否可以优化 TSQL 以更快地运行,或者将其拆分为更小的事务。我遇到过这样的情况,报告编写者、数据加载器等的错误查询的事务日志会使事务日志的大小超过数据文件的大小,而且它通常是性能不佳、编写不佳且未优化或分块的查询事务完成后,将其分成较小的事务以返还可用空间-顺便说一下,这也是在
SIMPLE
恢复模型数据库上-FULL
恢复模型数据库需要完成事务日志备份才能重用已提交事务的事务日志空间。根本问题可能是查询,因此确定谁在做什么并与他们联系并用您的发现报告问题会给他们施加压力,以修复他们的逻辑,以不为该磁盘分区占用服务器磁盘空间 - 希望是不是您的逻辑,但如果是,请查看优化逻辑以查询调整性能。