mssql sqlserver 收缩tempdb数据库的方法分享


摘要:
生产环境中tempdb数据库变的超级大,此时我们需要对数据库进行收缩,使其达到最佳的应用效果
tempdb数据主要 存储 临时对象 全局表 临时存储过程 全局存储过程及cte对象所产生的结果集
如果tempdb数据库过大,会使临时对象创建环境,从而影响数据库效率


通过情况下重启sqlserver服务,所有的临时对象都会随着服务器重启而消失,tempdb数据库对象也会变到最小状态,
但是PRO环境下,我们不可以随意重启DB,所以在tempdb异常大的情况下,我们只能通过sql命令收缩数据库

  
USE [tempdb]
GO
DBCC SHRINKFILE (N'tempdev',0,RUNCATEONLY)  --释放所有可用空间
GO
DBCC SHRINKFILE (N'tempdev',100)   --收缩文件至 100M  ---此时会提升收缩失败
GO

----解决方法: 清除所有缓存,然后收缩tempdb数据库
USE [tempdb]
GO
DBCC FREESYSTEMCACHE ('ALL')
GO

DBCC SHRINKFILE (N'tempdev',100)
GO