开发者

SQL Server 2005 - how to shrink the tempdb

My tempdb size is growing too much, as we are doing too many transactions in the database. Can someone let me know how to shrink this tempdb without restarting the server开发者_如何学编程. I have tried DBCC SHRINKDATABASE and it didn't help

Thanks in advance


Your tempdb is the size it needs to be...

It will just grow again, just even more fragmented on disk and possibly blocking while it grows too.

More seriously, I'd set the size of tempdb to soemthing sensible and slightly larger than now, shut down SQL, delete the old files to be 110% sure, start SQL Server up again...


I have found shrinking the tempdb to often be a troublesome task.

The solution I have used previously is to set the initial size of the tempdb database to be the actual desired size of the database. Restarting the SQL Server Service will then re-create the tempdb database to this sepcified size.

You may also find the following Microsoft reference to be useful reading:

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


Shrink the data files. From tempdb:

dbcc shrinkfile ('tempdev')

dbcc shrinkfile ('templog')

If you have other data files for tempdb you may need to shrink them also. You can see this from the system data dictionary. Look in the 'name' column.

select * from sys.database_files


Even with "DBCC SHRINKFILE" you can receive warning like "DBCC SHRINKFILE: Page 1:878039 could not be moved because it is a work file page." that lead to no shrinking.

I found a blog that explain well that situation and tell how to workaround and how to successfully shrink tempdb without restarting SQL: http://adventuresinsql.com/2009/12/how-to-shrink-tempdb-in-sql-2005/

So here is an exemple from that blog:

DBCC FREEPROCCACHE
GO
USE [tempdb]
GO
DBCC SHRINKFILE (N'tempdev')
GO
DBCC SHRINKDATABASE(N'tempdb')
GO
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜