如果SQLServer中的Tempdb空间增长异常,占用了太多空间,该怎么办?我相信很多没有经验的人对此无能为力。为此,本文总结了问题产生的原因及解决方法。希望你能通过这篇文章解决这个问题。
一、问题现象
我们大量生产的SQLServer在半夜发出了磁盘空间不足的警报。登上检查后发现tempdb已经超过500GB。
二、原因解析
与AP用户沟通后,AP用户告诉我们AP逻辑有问题,导致tempdb异常增长。
三、解决方法
1.如果可以重新启动SQL Server,将自动重新创建tempdb,这样tempdb将恢复到其原始大小。但是,除非绝对必要,否则尽量不要重启大规模生产环境。
2.直接收缩tempdb(但总是不成功)。
命令
使用[tempdb]
去
DBCC收缩文件(n' tempdb.mdf ',0,仅截断)-释放所有可用空间。
去
DBCC收缩文件(n' tempdb.mdf ',500)-将数据文件收缩到500MB
去
DBCC收缩文件(n' templog.ldf ',10)-将日志收缩到10MB
去
(2)图形界面
3.如果不能收缩tempdb,可以先用下面的方法处理,然后再收缩。
为了提高tempdb的性能,SQL Server 2005和更高版本缓存了一些IAM页面以供将来重用。在这种情况下,必须先释放IAM页面,然后才能释放其对应的页面。因此,通过DBCC FREESYSTEMCACHE,从所有缓存中释放所有未使用的缓存条目,然后收缩tempdb。
使用[tempdb]
去
DBCC自由系统高速缓存(“所有”)
去
DBCC SHRINKFILE (N'tempdb.mdf ',500)
去
看完以上内容,你是否掌握了如何处理SQLServer中Tempdb空间异常增长和巨大占用的方法?如果您想学习更多技能或了解更多相关内容,请关注行业资讯频道,感谢您的阅读!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/124807.html