SQL Server如何删除多余tempDB文件

Posted 自来云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server如何删除多余tempDB文件相关的知识,希望对你有一定的参考价值。

某时,创建了多个tempDB文件,已经超过了服务器核心数,现象删除tempDB文件,使其保持与CPU核心数相同。但是在删除的时候,发现无法删除,报出错误:无法删除文件“tempdev3”,因为它不能为空(Microsoft SQL Server,错误:5042)

  

  此时,使用脚本查看数据和日志文件使用情况:

SELECT DB_NAME() AS DbName,
name AS FileName,
size/128.0 AS CurrentSizeMB,
size/128.0 - CAST(FILEPROPERTY(name, \'SpaceUsed\') AS INT)/128.0 AS FreeSpaceMB
FROM sys.database_files;

   

  可以看到tempdev3这个文件已经被占用了一部分空间,在实际生产中,可能每个文件都会被占用,这里只做实验用。

  面对这种情况,就需要对tempdb中tempdev3这个文件进行收缩,在收缩前,需要确保此文件里不会有临时表等临时文件,因此需要将这些全部删除之后再进行收缩,收缩脚本:

USE tempdb
GO
DBCC SHRINKFILE (tempdev3, EMPTYFILE); -- to empty "tempdev3" data file
GO
   收缩完毕之后,将该文件删除,脚本如下:

ALTER DATABASE tempdb
REMOVE FILE tempdev3; --to delete "tempdev3" data file
GO
   以上就完全删除了tempdb中多余的文件。

 

以上是关于SQL Server如何删除多余tempDB文件的主要内容,如果未能解决你的问题,请参考以下文章

如何收缩 SQL Server 中的 Tempdb 数据库

SQL Server中的Tempdb已满

SQL Server Tempdb LOG 文件增长

sql server 临时库文件太大 迁移tempdb数据库

SQL Server tempdb 数据库位置迁移

SQL SERVER——TempDB问题查找定位与解决