SQL Server 2005 - 如何收缩tempdb

时间:2010-06-24 10:13:15

标签: sql sql-server

我的tempdb大小增长太多,因为我们在数据库中做了太多的事务。有人可以告诉我如何在不重新启动服务器的情况下缩小此tempdb。我尝试过DBCC SHRINKDATABASE,它没有帮助

提前致谢

4 个答案:

答案 0 :(得分:4)

你的tempdb是它需要的大小......

它会再次增长,在磁盘上更加分散,并且在它增长时可能会阻塞。

更严重的是,我将tempdb的大小设置为合理且比现在稍大,关闭SQL,删除旧文件为110%,再次启动SQL Server ...

答案 1 :(得分:3)

我发现缩小tempdb往往是一项麻烦的任务。

我之前使用的解决方案是将tempdb数据库的初始大小设置为实际所需的数据库大小。然后,重新启动SQL Server服务将重新创建tempdb数据库为此sepcified大小。

您可能还会发现以下Microsoft参考资料有用:

http://support.microsoft.com/kb/307487/en-gb

答案 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