关于SQL SERVER 2008数据库tempdb自动清除的问题

时间:2022-02-11 16:47:40
     大家都知道,sql server数据库,系统数据库下面有个存放临时表的tempdb库 ,这个库应该是服务重启后就自动清除和重建的, 因为我当时把数据库默认路径装到C盘了,现在我的服务器上这个库一直在增大,C盘都快没空间了,我重启sql服务,重启电脑都没有用,还是在一直变大,在tempdb库下面的临时表文件夹里面有大量的以#号开头的表,也不给删除,都快40G了,哪位高人解答下,这个是啥原因?或者有什么好的方法能解决这个问题!

6 个解决方案

#1


不懂,围观学习

#2


你收缩过数据库吗?

#3


可以考虑将tempdb移动到有更大空间的磁盘:
1、检查tempdb的逻辑名字和它的存在位置。可以使用下面语句:

SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

2、暂停数据库服务.
3、拷贝原来tempdb的文件到新的位置(原来文件位置可以通过上述查询得到)。
3、拷贝完毕后,启动数据库服务。
4、执行如下命令:
USE master;
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\tempdb\tempdb.mdf');
GO
ALTER DATABASE  tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'E:\tempdb\templog.ldf');
GO
在这里,name=tempdev 和templog是tempdb的逻辑名字,FileName='E:\temdb\tempdb.mdf'是tempdb的新位置.
5、最后检查tempdb移动是否成功。

SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

#4


另外需要观察,是那些操作导致tempdb越来越大,并且重启后没有还原为初始状态。
是不是并发多,或者事务处理过多等等。
然后根据找到的原因进行对应的调整,比如修改SQL代码等等。

#5


不懂,学些一下

#6


引用 楼主 tnt3d 的回复:
     大家都知道,sql server数据库,系统数据库下面有个存放临时表的tempdb库 ,这个库应该是服务重启后就自动清除和重建的, 因为我当时把数据库默认路径装到C盘了,现在我的服务器上这个库一直在增大,C盘都快没空间了,我重启sql服务,重启电脑都没有用,还是在一直变大,在tempdb库下面的临时表文件夹里面有大量的以#号开头的表,也不给删除,都快40G了,哪位高人解答下,这个是啥原因?或者有什么好的方法能解决这个问题!


参考 收缩tempdb http://support.microsoft.com/kb/307487/zh-cn

#1


不懂,围观学习

#2


你收缩过数据库吗?

#3


可以考虑将tempdb移动到有更大空间的磁盘:
1、检查tempdb的逻辑名字和它的存在位置。可以使用下面语句:

SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

2、暂停数据库服务.
3、拷贝原来tempdb的文件到新的位置(原来文件位置可以通过上述查询得到)。
3、拷贝完毕后,启动数据库服务。
4、执行如下命令:
USE master;
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\tempdb\tempdb.mdf');
GO
ALTER DATABASE  tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'E:\tempdb\templog.ldf');
GO
在这里,name=tempdev 和templog是tempdb的逻辑名字,FileName='E:\temdb\tempdb.mdf'是tempdb的新位置.
5、最后检查tempdb移动是否成功。

SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

#4


另外需要观察,是那些操作导致tempdb越来越大,并且重启后没有还原为初始状态。
是不是并发多,或者事务处理过多等等。
然后根据找到的原因进行对应的调整,比如修改SQL代码等等。

#5


不懂,学些一下

#6


引用 楼主 tnt3d 的回复:
     大家都知道,sql server数据库,系统数据库下面有个存放临时表的tempdb库 ,这个库应该是服务重启后就自动清除和重建的, 因为我当时把数据库默认路径装到C盘了,现在我的服务器上这个库一直在增大,C盘都快没空间了,我重启sql服务,重启电脑都没有用,还是在一直变大,在tempdb库下面的临时表文件夹里面有大量的以#号开头的表,也不给删除,都快40G了,哪位高人解答下,这个是啥原因?或者有什么好的方法能解决这个问题!


参考 收缩tempdb http://support.microsoft.com/kb/307487/zh-cn