我的tempdb大小增长太多,因为我们在数据库中做了太多的事务。有人可以告诉我如何在不重新启动服务器的情况下缩小此tempdb。我尝试过DBCC SHRINKDATABASE,它没有帮助
提前致谢
答案 0 :(得分:4)
你的tempdb是它需要的大小......
它会再次增长,在磁盘上更加分散,并且在它增长时可能会阻塞。
更严重的是,我将tempdb的大小设置为合理且比现在稍大,关闭SQL,删除旧文件为110%,再次启动SQL Server ...
答案 1 :(得分:3)
我发现缩小tempdb往往是一项麻烦的任务。
我之前使用的解决方案是将tempdb数据库的初始大小设置为实际所需的数据库大小。然后,重新启动SQL Server服务将重新创建tempdb数据库为此sepcified大小。
您可能还会发现以下Microsoft参考资料有用:
答案 2 :(得分:0)
收缩数据文件。来自tempdb:
dbcc shrinkfile ('tempdev')
dbcc shrinkfile ('templog')
如果您有tempdb的其他数据文件,您可能还需要缩小它们。您可以从系统数据字典中看到这一点。查看“名称”列。
select * from sys.database_files
答案 3 :(得分:0)
即使使用" DBCC SHRINKFILE"您可以收到类似于" DBCC SHRINKFILE的警告:无法移动页面1:878039,因为它是工作文件页面。"这导致没有萎缩。
我发现了一个博客,可以很好地解释这种情况,并告诉如何解决方法以及如何在不重新启动SQL的情况下成功缩小tempdb: http://adventuresinsql.com/2009/12/how-to-shrink-tempdb-in-sql-2005/
所以这是博客的一个例子:
DBCC FREEPROCCACHE
GO
USE [tempdb]
GO
DBCC SHRINKFILE (N'tempdev')
GO
DBCC SHRINKDATABASE(N'tempdb')
GO