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中多余的文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM