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

解决方案 »

  1.   

    可以考虑将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');
      

  2.   

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

  3.   


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